存储库模式适用于实体框架

Repository pattern is good for entity-framework

一个人说不需要为实体使用 Repository 模式-framework.he 给出了一些理由:

The single best reason to not use the repository pattern with Entity Framework? 
Entity Framework already implements a repository pattern. DbContext is your UoW (Unit of Work) 
and each DbSet is the repository. Implementing another layer on top of this is not only redundant, 
but makes maintenance harder.

我只是找不到合适的文章讨论 EF 已经实现存储库模式。因此,如果存在任何文章,请让我知道该站点。

怎么说 DbContext is UOWdbset is repository pattern。我正在寻找一个很好的教程来解释 DbContext 如何作为工作单元工作,而 dbset 是存储库模式。

如果 EF 已经有 UoW 和 Repository 模式那么为什么这篇文章显示要编写额外的代码来开发另一个 repository 模式 http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

它不会变得多余吗? 谢谢

ORM (EF) 和存储库模式是两个截然不同的东西,被许多开发人员非常滥用。 EF 确实实现了 UoW(使用真正的 UoW 的 Db 事务),但它没有实现存储库模式。 永远,永远,永远,永远!

EF 是数据访问对象,它在关系数据库之上模拟 OOP 数据库。存储库模式抽象了 any 持久性细节。仅仅因为您有一个集合,并不意味着它是一个存储库。存储库 使用 ORM。此外,您不会告诉存储库 如何 完成它的工作 (IQueryable),您只告诉 什么 您想要从中得到什么。 EF 使用对象就好像它是表(因为它们确实表示表及其关系),存储库处理整个概念中的业务对象(可以存储在一个或 10 个表中)ORM 关心数据,存储库关心一致的概念值。

使用 ORM 作为存储库违背了模式的目的,即抽象持久性细节。它确实适用于您只处理数据结构而不关心抽象内容的简单 CRUD 应用程序,仅此而已。对于任何更复杂的事情,您需要一个合适的存储库模式,它永远不会公开 ORM 或任何其他数据库访问细节。

存储库在使用 ORM 的简单应用程序中没有太大价值,在这些情况下您可以跳过它。似乎许多开发人员只从事简单的应用程序,他们错误地认为 ORM 就足够了。或者更糟的是,他们认为他们在做 DDD,而实际上他们使用 DDD 术语进行 CRUD。然后他们最终得到了巨大的数据结构,这些数据结构似乎模仿了关系数据库模式。

使用真正的存储库模式,您不知道也不关心任何持久性。你只知道有一种东西叫坚持,但仅此而已。而已。它可能是关系数据库、文档数据库、键值存储或外部服务。但是只有存储库实现知道这一点,应用程序的其余部分只知道一个叫做存储库的神奇东西,它是 saves/gets 个对象。

了解存储库的作用是一个设计问题,不幸的是,许多开发人员只关注编程并且不擅长正确的设计(他们将所有内容都视为 CRUD/transact 脚本)。

what is industry standard for mid or big size project?

有none。这取决于您想要从您的应用程序中获得什么。