实体类型<classname>不是当前上下文</classname>的模型的一部分

时间:2011-02-13 07:57:39

标签: entity-framework ef-code-first

DB有一个表PackagingInfo。我有一个Package课程和一个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);
}

在实例化_db上下文并检查其Packages属性后,注意到异常:

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

更新

我已经编辑了这个问题并要求重新打开,因为在模型第一种方法中也出现了这种情况,其中表映射是在EDMX文件中完成的,而不是在这里注意到的注释:

模型浏览器窗口显示模型和商店实体类型中的Package,实体的表映射显示正确映射到表列的每个属性。这与注释代码优先样式完成的映射相同。

1 个答案:

答案 0 :(得分:1)

显式添加“DatabaseGenerated”属性以设置数据库中列的“identity”

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

指定十进制数据类型的精度。这是因为默认情况下它假定十进制数据类型的小数点后面有两个数字。我们需要将其设置为0。

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