我阅读了很多,但我无法找到最佳实践ASP.NET MVC项目分离问题的明确答案。我有一个很小的,一个人展示项目,我想使用实体框架拥有对象关系映射数据库,但我想避免将数据库层分离到另一个项目。据我所知,将数据模型放到MVC项目的隐式Model文件夹中并不是一个好主意,但在哪里放呢?什么是View模型的正确命名和情况(在模型文件夹中我猜),edmx文件,接口,存储库,什么是放置整个业务逻辑的最佳位置?
修改
我表示自己错误地将DAL分离到另一个项目,对于我来说,在单独的项目中拥有或不拥有DAL并不重要,我在这个规模的项目中看不到这种方法的任何优势。
答案 0 :(得分:3)
如果你的一个人展示项目随着时间的推移成为一个大项目怎么办?通过不区分问题,您立即失去了可扩展性。
我不会在MVC项目中放任何与在客户端上呈现或编辑数据直接相关的内容。
考虑一个负责沟通数据库的服务层。 考虑一个描述您的实体的域层。然后,您可以从域实体构建视图模型,这些实体通过服务层检索。
这是一个非常基本的架构。如果您在数据库中有4个表,那4个域实体(模型或任何您想要调用的表),4个EF配置文件和4个视图模型来显示页面上的数据。如果您决定在数据库中添加另外几个表,那么您的MVC项目开始变得非常大,而且还没有提到任何可以处理CRUD操作的接口或服务。
答案 1 :(得分:0)
嗯,ASP.NET MVC默认只有2个命名约定(无论如何,都可以更改):
原因是默认情况下MVC框架在这些文件夹中查找控制器和视图(实际上有一个更复杂的逻辑来查找它们,但其余的你可以从我上面提到的网站获得并从MSDN)。
至于模型 - 它完全没有关系。至于我,如果我需要创建一个非常简单的网站,那么我将ViewModels放入ViewModels文件夹并命名为' ShoppingChartViewModel'以及映射到数据库中相应表的数据模型到Models文件夹中。 如果您有服务或其他具有业务逻辑的内容,那么您可以将它们放入“服务”中。文件夹中。