Entity framework 4 为什么我需要一个整体框架中的单元4?你能澄清一下吗?

Entity framework 4 为什么我需要一个整体框架中的单元4?你能澄清一下吗?,entity-framework-4,Entity Framework 4,我正在赶时髦,开始实施UnitOfWork with repository模式。 仍然需要找到一个与“Include”一起工作的示例。我使用的是EF而不是poco生成的代码。我可以在哪里下载一个?我知道我应该使用poco”,这是另一个故事 现在我的问题是 我显然没有抓住重点。为什么我需要一个工作单元 我有很多事务,我做Context.SaveChanges();如果出了问题,一切都会被退回不? 这不就是工作单元的意义吗。?如果是这种情况,EF4已经在OBjectContext中内置了UnitOF

我正在赶时髦,开始实施UnitOfWork with repository模式。 仍然需要找到一个与“Include”一起工作的示例。我使用的是EF而不是poco生成的代码。我可以在哪里下载一个?我知道我应该使用poco”,这是另一个故事

现在我的问题是 我显然没有抓住重点。为什么我需要一个工作单元

我有很多事务,我做Context.SaveChanges();如果出了问题,一切都会被退回不? 这不就是工作单元的意义吗。?如果是这种情况,EF4已经在OBjectContext中内置了UnitOFwork


为什么要额外上课?你能解释一下吗?谢谢。

工作单元用于作为单个事务的一部分跨多个存储库进行保存

例如,如果您使用的是用户存储库FooRepository,如果第一个通过,则第二个失败,则事务不同步

工作单元作为ObjectContext的包装器实现,这意味着您在两个存储库上都进行工作,然后在UoW上提交一次,这将处理两个存储库之间的更改。如果一个或两个操作都失败,则整个事务将失败

这取决于您如何使用ObjectContext。如果直接使用对象上下文,则可以将所有操作包装在using语句中。但是大多数人通过存储库访问上下文(并使用DI容器或手动处理上下文)。在这种情况下,使用多个存储库需要一个工作单元


DDD纯粹主义者会争辩说,当聚合边界正确时,存储库不需要工作单元。

您好,谢谢您的回答。目前,我正在使用您所说的Using语句直接针对对象上下文工作。因此,您的意思是,如果您正在创建存储库,因此要进行单元测试-模拟,那么您就需要一个UnitOfWork。否则ObjectContext会做完全相同的工作。否?。感谢您的链接。但是,示例似乎没有处理include,或者无法理解他如何使用include。没有include它;这对我来说很没用。再次感谢您的回复。您是否实现了包含的UnitOfWork?工作单元与包含无关。我使用工作单位和包含。包含在
对象集上完成。如果您的工作直接针对上下文,那么您不需要工作单元。正如我所说,UoW仅用于存储库模式。这和嘲笑也没什么关系。当然,您可以创建一个接口(IUnitofWork),然后模拟它,但您也可以对IObjectContext执行同样的操作。总的来说,我认为UoW不适用于您的场景。目前我正在重新研究上下文,但我想开始研究存储库。我对存储库模式的理解是“从数据层抽象”代码更易于测试。您是否有一个简单的示例,说明您如何在工作单元中使用include?感谢您的时间如果您查看我发送给您的链接,他使用
IQueryable
在其存储库中查找方法。我也这么做。您熟悉IQueryable
吗?基本上,它使用延迟执行,因此在执行类似
.ToList
.SingleOrDefault
的内容之前不会执行查询
.Include
关闭
ObjectQuery
,它还实现了
IQueryable
。因此,我要做的是将
IQueryable
转换为
ObjectQuery
,并
包括
。示例:
var query=repository.Find(x=>x.Id==1);query=((ObjectQuery)query).Include(“某物”).ToList()在扩展方法中执行此操作以隐藏强制转换。