MVC3和实体框架

时间:2011-09-19 16:34:17

标签: asp.net .net asp.net-mvc-3 entity-framework

我的问题很简单:将.edmx文件放在MVC3项目的Web应用程序中的模型文件夹中是一种好习惯吗?

3 个答案:

答案 0 :(得分:94)

我的回答很简单,不要搞砸表示层(整个MVC应用程序)与数据访问逻辑和数据建模。

在Visual Studio解决方案中至少有4个项目,从下到上:

1 - ProjectName.Interfaces(类库,实体的接口);

2 - ProjectName.DAL(类库,唯一允许使用EF的人,POCO实体使用另一个文件实现项目1的接口,您使用部分类重新声明相同的对象...); < / p>

3 - ProjectName.BL(类库,业务逻辑,引用上面1和2的两个项目);

4 - ProjectName.Web(ASP.NET MVC应用程序,表示层,引用两个项目1和3但不是2);

这简化了当然,根据我的经验,这是一个坚实的设计,对于非常小的项目来说有点过分,但从长远来看是值得的。

在我看来,M的MVC,Model,不是数据模型,不是EF,不是ORM绑定到特定的数据库引擎。

这个答案当然是主观的,并且是基于我的个人经验; - )

答案 1 :(得分:9)

我完全同意Davide在这里我只想补充一点,您还应该考虑使用POCO模板来生成poco对象,而不是将实体框架对象返回到另一个层,因为它会依赖于实体框架。

如果你不把它推到一个单独的项目中,那么你的直接数据访问代码最终会被扔进你的网络代码中。我一直都看到它(而且我们在某个时候都对此感到内疚)

答案 2 :(得分:3)

我认为这不重要。

我使用CodeFirst,所以我的DbContext类转到Model文件夹。

真的,EDMX仅用于代码生成,除了它没有做太多,它没有部署/发布到你的服务器等等。所以它留下来并不重要。您可以根据需要为EDMX创建另一个文件夹,或者按照您的要求将其放入模型中。