我一直在研究 ASP.net MVC 一段时间。似乎大多数博客和帖子都表明“最佳实践”是通过实现存储库模式来抽象出实体框架。似乎推荐的做法是使用特定于视图的模型,而不是直接使用 EF 域实体。
这是有道理的,因为您可以在存储库中实现一个透明的缓存层,您的 MVC 应用程序不需要了解有关实体框架的任何信息,并且特定于视图的 POCO 模型没有附加所有 EF 方法和属性给他们(这往往会弄乱 XML 和 JSON 序列化)。
但如果这是人们“应该”开发的方式,为什么 Visual Studio 中的所有控制器/视图向导和工具都直接专注于实体框架?为什么http://www.asp.net/mvc上的所有 Microsoft 示例似乎都直接与框架和域实体一起工作,而不是创建具有缓存和使用视图特定模型的存储库?
另外,如果我应该使用特定于视图的模型,我是否将域实体映射到控制器中的那些模型上?如果我只需要某些字段,将对象图返回给控制器不是效率低下吗?或者我应该在我的存储库上创建特定于视图模型的方法?