【发布时间】:2015-08-04 14:23:45
【问题描述】:
我试图了解何时以及如何以“正确的方式”使用 UOW。我知道很可能有一堆正确和错误的方法,在某些情况下它可能归结为这样的事情“味道”..
无论如何.. 我不明白的是,几个月前我加入了一个项目,他们也在使用 UOW 进行业务逻辑.. 在阅读了一些关于它的帖子之后似乎没有多大意义.. 因为据我了解,UOW 的主要目的是处理从您的应用程序到数据源(数据库)的“事务”,对吗?
因此,例如在 DDD 中,您的存储库将成为 UOW 的一部分,因为您希望 DbContext(数据库连接)保持打开一段时间,以便您可以在多个存储库之间共享相同的 DbContext,然后在一个事务中执行对同一个 DbContex 的所有更改......我猜这是有道理的......
但是将例如服务或工厂(在 DDD 中)作为 UOW 的一部分并没有多大意义。因为它们不(或至少不应该)与任何 DbContext 或数据库交互..
那么...可以将业务逻辑与 UOW“捆绑”在一起吗?... 比如:
var html = UnitOfWork.HtmlFactory.EncodeString("<p>some string</p>");
UnitOfWork.HtmlStringRepository.Add(html);
UnitOfWork.SaveChanges();
这有意义吗?
这样做是否更有意义:
var html = HtmlFactory.EncodeString("<p>some string</p>");
UnitOfWork.HtmlStringRepository.Add(html);
UnitOfWork.SaveChanges();
??
哦!..在这种情况下,UnitOfWork 是一个属性.. 所以是的.. 它是一个对象引用,而不是具有一堆静态函数的类。
兄弟, 指数
【问题讨论】:
标签: c# entity-framework unit-of-work