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

标签 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.

更新

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

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

最佳答案

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

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

指定十进制数据类型的精度。这是因为默认情况下,它假定十进制数据类型的小数点后有两个数字。我们需要将其设置为 0。
modelBuilder.Entity<User>().Property(x => x.ID).HasPrecision(16, 0);

关于entity-framework - 实体类型 <classname> 不是当前上下文模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4983108/

相关文章:

asp.net-mvc - MVC 通过包含父值和子列表的 View 模型传递 View 模型 View

c# - 如何首先在 EF 代码中映射 Sql 服务器的文本字段类型?

c# - 如何使用 FK 设置集合属性?

asp.net-mvc - EntityFramework 代码首次迁移在部署到 Azure 后未运行

entity-framework - 无法检查 Entity Framework CTP5 模型兼容性,因为数据库不包含模型元数据

c# - Linq To Entities Group By 键中有多个表

c# - Entity Framework : Skip few columns or select as null from related entities

entity-framework - 即使禁用了自动迁移,Update-Database 也会尝试进行自动迁移

c# - Entity Framework - 链接到表中的所有项目,然后添加一个新项目?

entity-framework - 在多对多链接表上选择性地禁用级联删除