我的问题很简单:将.edmx
文件放在MVC3项目的Web应用程序中的模型文件夹中是一种好习惯吗?
答案 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创建另一个文件夹,或者按照您的要求将其放入模型中。