开发者

The entity type <classname> is not part of the model for the current context

DB has a table PackagingInfo. I have a Package class, and a ShopEntities : DbContext.

// Entity (ex. Package.cs)
[Table("PackagingInfo")]
public class Package
{
    public decimal PackageID { get; set; }
    public decimal Title { get; set; }
    public decimal Cost { get; set; }
    public bool isFree { get; set; }

}

// Entity Context (ex. ShopEntities.cs)
public class ShopEntities : DbContext
{               
    public DbSet<Package> Packages { get; set; }
}


// Controller Action (ex. HomeController.cs)
public ActionResult Index()
{
    ShopEntities _db = new ShopEntities();
    var q = _db.Packages.ToList();
    return View(q);
}

After instantiating the _db context and inspecting its Packages property and exception is noticed:

The entity type Package is not part of the model for the current context.

Update

I've edited this question and requested its reopening because the situation is also occuring in a Model first approach where the table mapping is done in the EDMX file instead of the annotation noticed here:

Model Browser window shows the Package in bot the Model and Store entity types, and the entity's Table Mapping shows each property properly mapped to the table column. This is the same mapping a开发者_运维知识库ccomplished by the annotation code-first style.


Explicitly add the “DatabaseGenerated” attribute to set the “identity” value of the column in database

[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]

Specify the precision for the decimal data type. This is because by default it assumes there are two numbers after the decimal for decimal data type. We need to set it 0.

modelBuilder.Entity<User>().Property(x => x.ID).HasPrecision(16, 0);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜