【发布时间】:2013-08-30 09:23:25
【问题描述】:
我正在使用 Entity Framework 5 和 MVC4 来使用 Model First 创建一个小型测试应用程序。
我有两个项目,一个data 项目和一个引用数据的ui 项目。
我在data 中有我的模型MYModel.edmx,它具有以下实体
[ITEM]
[BOOK][DVD]
其中“book”和“dvd”具有抽象类“Item”的基类型。
使用代码生成,它为这 3 个表和我的 dbContext 创建类:
public DbSet<Item> Items {get;set;}
不创建任何用于访问“书籍”或“DVD”的 DbSet。
如果我尝试使用我的数据上下文和“书籍”模型类创建一个新控制器,我会收到以下错误
mynamespace.data.books is not part of the specified mynamespace.data.dbcontext class, and the mynamespace.data.dbcontext class could not be modified to add a dbset<mynamespace.data.books> property to it. (For example )
首先将 EF 与基本类型和模型一起使用的正确方法是什么,因为我显然做错了什么,我什至应该先使用 Model 吗?在这种情况下使用 Code first 并自己创建 DBContext 会更容易吗?
【问题讨论】:
-
您是否正在创建模型并通过 edmx 生成实体?它应该是其中之一。
-
@ChrisHardie 全部由 EDMX 生成
-
您的抽象类是由 EDMX 生成的吗?
-
@ChrisHardie 是的,在我的“项目”实体的属性窗口中,我已将其设置为 Abstract = true。它从 EDMX 生成一个
public abstract partial class Item(在 .tt 代码生成项中) -
听起来您正在实现 Table-Per-Hierarchy 继承。如果您查看您的实际数据库结构,将只有一个 Item 表,但它将包含 Books 和 DVD 的字段。我不熟悉模型优先,但你应该检查一下:asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/…
标签: asp.net-mvc entity-framework