1

我正在使用 Entity Framework 5 和 MVC4 来使用 Model First 创建一个小型测试应用程序。

我有两个项目,一个data项目和一个ui引用数据的项目。

我有我的模型MYModel.edmxdata其中包含以下实体

[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与基本类型和模型一起使用的正确方法是什么,因为我显然做错了什么,我什至应该先使用模型吗?在这种情况下首先使用代码并自己创建 DBContext 会更容易吗?

4

2 回答 2

1

我对模型优先不是很熟悉,但请尝试在您的mynamespace.data命名空间中添加它:

public class DVD : Item{
    //Put your DVD specific properties here
}

public class Book : Item{
     //Put your Book specific properties here
}

不要在此处添加主键,它们都将继承 ItemId 主键,因为在数据库中 DVD 和 Book 都存储在 Item 表中。

然后,将这两个模型添加到您的上下文中:

public DbSet<DVD> DVDs {get;set;}
public DbSet<Book> Books {get;set;}

可以在这里找到通过代码优先实现 Table-Per-Hierarchy 的一个很好的参考,对不起,我不知道任何模型优先参考:http ://www.asp.net/mvc/tutorials/getting -started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application

于 2013-08-30T16:41:18.100 回答
0

我有同样的问题,但我不知道是什么原因造成的。您需要做的就是:

  1. 编译项目
  2. 右键单击您的 Controllers 文件夹以添加您的控制器
  3. 在 Data Context 类的 Add Controller 对话框中,手动键入您的上下文,然后单击 Add

希望有帮助

于 2014-03-14T03:05:13.917 回答