Asp.net mvc 在MVC应用程序中实体框架数据模型放在哪里? 让我们考虑默认的ASP.NET MVC应用程序文件夹结构,所以看起来是这样的: -App_data -Content -Controllers HomeController.cs -Models AccountModels.cs -Scripts -Views

Asp.net mvc 在MVC应用程序中实体框架数据模型放在哪里? 让我们考虑默认的ASP.NET MVC应用程序文件夹结构,所以看起来是这样的: -App_data -Content -Controllers HomeController.cs -Models AccountModels.cs -Scripts -Views,asp.net-mvc,entity-framework,asp.net-mvc-2,design-patterns,Asp.net Mvc,Entity Framework,Asp.net Mvc 2,Design Patterns,我的问题是:哪里是放置实体框架数据模型(EDMX)文件的最佳位置?是模型文件夹吗?是的-我们知道好的解决方案是引入新项目并将其引用到MVC应用程序,但现在让我们忘记这一点。对于一个小项目,它应该是模型的一部分。对于更大的产品,存储库和相关模型可以在一个单独的组件中。这是有争议的,但我对Models文件夹投+1票 唯一的其他候选项是App_Data,但这通常适用于基于文件的数据库(例如SQL Server CE.MDF)和您不希望由IIS提供服务的文件 由于EDMX是数据库的抽象,因此它应该进入M

我的问题是:哪里是放置实体框架数据模型(EDMX)文件的最佳位置?是模型文件夹吗?是的-我们知道好的解决方案是引入新项目并将其引用到MVC应用程序,但现在让我们忘记这一点。

对于一个小项目,它应该是模型的一部分。对于更大的产品,存储库和相关模型可以在一个单独的组件中。

这是有争议的,但我对Models文件夹投+1票

唯一的其他候选项是App_Data,但这通常适用于基于文件的数据库(例如SQL Server CE.MDF)和您不希望由IIS提供服务的文件

由于EDMX是数据库的抽象,因此它应该进入Models文件夹


如果项目越来越大,您应该明确地将EF模型移动到另一个项目中。为了进一步证明自己,让您的控制器通过存储库/接口访问EDMX,因此当您将DAL移到另一个项目时,您所要做的就是添加引用并添加using语句。

我的意见是您应该创建

  • 域对象、数据合约等的单独项目。。。 例如MyProject.Infrastructure,包括许多文件夹,如 数据合同、模型、例外情况等
  • 一个单独的DataAccess项目包含DBContexts和存储库,这样以后您就可以轻松地管理迁移
  • 我会将EF模型(又名物理模型)始终放在它自己的组件中,或者放在主MVC应用程序之外的“核心”组件中。这同样适用于您的业务逻辑/域逻辑/域服务等。将非web内容与MVC web应用程序分开

    这将帮助您重新使用应用程序的核心部分。例如,当您需要将其作为服务、命令行工具、迁移工具等公开时


    因为将其存储在自己的程序集中非常简单,而且需要几分钟的时间,所以我强烈建议对每个小应用程序也这样做。

    为什么要事先排除正确的解决方案—将所有这些内容放在单独的程序集中??这是最好和最干净的方法-使用它!两个独立的项目真的有必要吗?为什么不在一个项目中添加域类和数据访问类呢。如果您将有许多不同的后端数据存储(可能是一些非关系的),那么针对域类和数据访问的单独项目是有意义的。