Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 我们能否将EF DbContext调用到UnitOfWork及其集合<;T>;到存储库?_Entity Framework_Design Patterns_Repository Pattern_Dbcontext_Unit Of Work - Fatal编程技术网

Entity framework 我们能否将EF DbContext调用到UnitOfWork及其集合<;T>;到存储库?

Entity framework 我们能否将EF DbContext调用到UnitOfWork及其集合<;T>;到存储库?,entity-framework,design-patterns,repository-pattern,dbcontext,unit-of-work,Entity Framework,Design Patterns,Repository Pattern,Dbcontext,Unit Of Work,如果是,那么我们就完成了。。。使用EF(带DbContext)时,无需设计和实现回购协议和工作单元 也许我遗漏了什么,但对我来说,DbContext实现了一个完美的工作单元(接口缺失了…:-()及其.Set是实体T的通用repo 那么,为什么人们一直在实现repo使用/拥有一个上下文,以及实现工作单元使用/拥有一个或多个repo?他们使用相同设计模式的实现来实现设计模式 (我知道:EF DbContext没有实现一个适合UnitOfWork/Repo模式的可用接口,但除此之外,我遗漏了一些东西?

如果是,那么我们就完成了。。。使用EF(带DbContext)时,无需设计和实现回购协议和工作单元

也许我遗漏了什么,但对我来说,DbContext实现了一个完美的工作单元(接口缺失了…:-()及其.Set是实体T的通用repo

那么,为什么人们一直在实现repo使用/拥有一个上下文,以及实现工作单元使用/拥有一个或多个repo?他们使用相同设计模式的实现来实现设计模式

(我知道:EF DbContext没有实现一个适合UnitOfWork/Repo模式的可用接口,但除此之外,我遗漏了一些东西?)

提前Thx

你说得对


但是,如果人们错过了一些功能(例如,DbSet是一个过于通用的存储库,缺乏查询重用的可能性(例如,使用规范模式)),那么他们正在现有的基础上实现他们的自定义版本。

是的,他们是工作单元和存储库模式的实现。
我认为您需要使用自己的存储库或工作单元的唯一情况是当您计划将数据访问逻辑与存储库级别分离时。这意味着,如果您以后要使用其他方式访问数据库(如Nhibernate),那么就很容易拥有自己的存储库层

此外,如果您不仅需要实体框架,还需要另一种类型的数据源,那么最好为您的数据访问提供这样一个抽象层。