C# ASP.NET MVC小型项目体系结构

C# ASP.NET MVC小型项目体系结构,c#,asp.net,asp.net-mvc,architecture,C#,Asp.net,Asp.net Mvc,Architecture,我读了很多关于ASP.NET MVC项目分离的文章,但是我找不到最佳实践问题的明确答案。我有一个很小的,单人秀的项目,我想使用实体框架来映射对象关系数据库,但我想避免将数据库层分离到另一个项目。正如我所知,将数据模型放在MVC项目的隐式模型文件夹中不是一个好主意,但放在哪里呢?视图模型(在模型文件夹I gues中)、edmx文件、接口、存储库的正确命名和位置是什么,放置整个业务逻辑的最佳位置是什么 编辑 我认为将DAL分离到另一个项目是错误的,在单独的项目中使用或不使用DAL对我来说并不重要,我

我读了很多关于ASP.NET MVC项目分离的文章,但是我找不到最佳实践问题的明确答案。我有一个很小的,单人秀的项目,我想使用实体框架来映射对象关系数据库,但我想避免将数据库层分离到另一个项目。正如我所知,将数据模型放在MVC项目的隐式模型文件夹中不是一个好主意,但放在哪里呢?视图模型(在模型文件夹I gues中)、edmx文件、接口、存储库的正确命名和位置是什么,放置整个业务逻辑的最佳位置是什么

编辑

我认为将DAL分离到另一个项目是错误的,在单独的项目中使用或不使用DAL对我来说并不重要,我只是不认为这种方法在如此规模的项目中有任何优势

默认情况下,只有2个命名约定(无论如何,可以更改):

  • 控制器放置在控制器文件夹中,其名称应以“控制器”一词结尾,如“ShoppingChartController”
  • 视图被放置在视图文件夹的子文件夹中(名称与控制器名称相同),默认情况下,它们的名称与控制器的操作名称相同
  • 原因是默认情况下,MVC框架在这些文件夹中查找控制器和视图(实际上查找它们的逻辑更复杂,但其余的可以从我上面提到的网站和MSDN获得)

    至于模型,这完全不重要。对我来说,如果我需要创建一个非常简单的网站,那么我会将ViewModels放入ViewModels文件夹中,并将它们命名为“ShoppingChartViewModel”,将数据模型映射到数据库中的相应表中,并将其命名为models文件夹。 如果您有服务或其他包含业务逻辑的内容,则可以将其放入“服务”文件夹。

    默认情况下,只有两种命名约定(无论如何,可以更改):

  • 控制器放置在控制器文件夹中,其名称应以“控制器”一词结尾,如“ShoppingChartController”
  • 视图被放置在视图文件夹的子文件夹中(名称与控制器名称相同),默认情况下,它们的名称与控制器的操作名称相同
  • 原因是默认情况下,MVC框架在这些文件夹中查找控制器和视图(实际上查找它们的逻辑更复杂,但其余的可以从我上面提到的网站和MSDN获得)

    至于模型,这完全不重要。对我来说,如果我需要创建一个非常简单的网站,那么我会将ViewModels放入ViewModels文件夹中,并将它们命名为“ShoppingChartViewModel”,将数据模型映射到数据库中的相应表中,并将其命名为models文件夹。
    如果您有服务或其他包含业务逻辑的东西,那么您可以将它们放入“服务”文件夹。

    如果您的单人秀项目随着时间的推移成为一个大项目,该怎么办?通过不分离关注点,您立即失去了可伸缩性

    我不会在MVC项目中加入任何与在客户机上显示或编辑数据没有直接关系的内容

    考虑一个负责与数据库通信的服务层。 考虑一个描述实体的域层。然后,您可以从域实体构建视图模型,这些实体通过服务层检索


    这是一个非常基本的架构。如果您的数据库中有4个表,即4个域实体(模型或任何您想调用它们的名称)、4个EF配置文件和4个视图模型,以在页面上显示数据。如果您随后决定在数据库中再添加几个表,那么您的MVC项目开始变得相当大,这还没有提到任何接口或服务来处理CRUD操作。

    如果您的单人秀项目随着时间的推移成为一个大项目,该怎么办?通过不分离关注点,您立即失去了可伸缩性

    我不会在MVC项目中加入任何与在客户机上显示或编辑数据没有直接关系的内容

    考虑一个负责与数据库通信的服务层。 考虑一个描述实体的域层。然后,您可以从域实体构建视图模型,这些实体通过服务层检索


    这是一个非常基本的架构。如果您的数据库中有4个表,即4个域实体(模型或任何您想调用它们的名称)、4个EF配置文件和4个视图模型,以在页面上显示数据。如果您决定在数据库中再添加几个表,您的MVC项目开始变得相当大,这还没有提到任何接口或服务来处理CRUD操作。

    将DAL放在一个单独的项目中有什么问题吗?什么都没有,我只是不认为这种方法在如此规模的项目中有任何优势。我表达了自己的错误,在单独的项目中有没有DAL对我来说并不重要。在单独的项目中有DAL有什么不对?一点都没有,我只是不认为这种方法在如此规模的项目中有任何优势。我表达错了,在单独的项目中有没有DAL对我来说并不重要。