Entity framework 构建ASP.NET MVC(实体框架)应用程序

Entity framework 构建ASP.NET MVC(实体框架)应用程序,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我有一些关于MVC模式和构建我的应用程序的一般性问题。在我的应用程序中,我将管理多个不相关的实体。在大多数情况下,一个实体可以是多个数据库表 例如,应用程序可以管理人员和水果。人与果之间没有关系 Persons实体由多个表组成 **Person** PersonID JobID LocationID **Job** JobID Name **Location** LocationID Name **Fruit** FruitID ColorID ShapeID **Color** Col

我有一些关于MVC模式和构建我的应用程序的一般性问题。在我的应用程序中,我将管理多个不相关的实体。在大多数情况下,一个实体可以是多个数据库表

例如,应用程序可以管理人员和水果。人与果之间没有关系

Persons实体由多个表组成

**Person**
PersonID
JobID
LocationID

**Job**
JobID
Name

**Location**
LocationID
Name
**Fruit**
FruitID
ColorID
ShapeID

**Color**
ColorID
name

**Shape**
ShapeID
Name
水果实体(与人完全无关)也由多个表组成

**Person**
PersonID
JobID
LocationID

**Job**
JobID
Name

**Location**
LocationID
Name
**Fruit**
FruitID
ColorID
ShapeID

**Color**
ColorID
name

**Shape**
ShapeID
Name
因此,在我的项目中,每个数据库表都有一个模型类。我为每个实体都有一个控制器(FrootController和PersonController)

这就是我困惑的地方:

我应该为每个实体设置一个DBContext,还是为整个项目设置一个DBContext

现在让我们假设我为这个项目创建了一个迁移。创建迁移时,会在“迁移”文件夹中为我提供一个configuration.cs文件。打开该文件,就会有一个Seed方法,它将DBContext作为参数。如果您对上一个问题的回答是每个实体都有一个DBContext,那么既然我将DBContext作为参数传入,那么如何为每个实体设定种子

接下来是存储库。 我应该为每个实体设置一个存储库,还是为每个表设置一个存储库


我已经知道有很多例子展示了如何设置这些东西,但大多数只是展示了如何做事情的基本部分。我想我正在从基本示例中寻找更高层次的内容。

我建议对两个实体使用相同的DBContext文件,如果使用2,则更难使数据库与模型保持最新。这也解决了多种子文件的问题

然后,您应该为每个实体创建一个不同的存储库(1个用于水果,1个用于个人)。它们都将在构造函数中注入相同的DBContext


当然,这不是一成不变的,您应该使用对您最有意义的方法。

您可以创建新的标记。只是让你知道我不知道。我真的很难相信我是第一个问MVC5问题的人,所以这让我觉得是其他人在创建标签。你知道,人可以是水果!:)我一直采用的经验法则是,每个连接到的数据库都有一个上下文。如果Person和Fruit对象存储在同一个DB中,那么它就是同一个上下文。实际上,现在我想了很多,如果您使用内置安全性,那么您已经有了一个ApplicationContext,因此我可能会有不止一个上下文