EntityFramework
允许我从POCO
类创建表。这Repository pattern
允许我在数据库概念之上创建一个抽象层,以便我可以专注于对实际应用程序进行编程。
但是,UnitOfWork
(UoW)模式。这是一种在 Web 上大肆宣传的模式,尤其是与 EF 结合使用时。
我正在使用多个存储库,并且确实需要以原子方式提交内容。然后我在每个 UoW 示例中,我看到他们实现了一个方法,该方法SaveChanges
什么都不做,然后将调用传递给DbContext.SaveChanges
. 感觉有点薄,所以我可能错过了重点。或者UnitOfWork
仅仅是一个DbContext
包装?
示例场景:
我有一个多租户网络应用程序。创建新的时Tenant
,创建的用户Tenant
也需要存储为新创建的用户Tenant
。在我当前的情况下,负责创建新Tenant
并分配第一个的类是类本身。如果发生故障,则不应将 和 存储在数据库中。User
Tenant
Tenant
User
我现在处理的方式DbContext.SaveChanges
是在所有操作成功执行之前不调用。
有人(更喜欢在实际 EF 解决方案中实际使用 UoW 的该领域专家)解释使用UnitOfWork
过度依赖的优势DbContext
吗?
专家能否也给我一些关于命名约定的提示?TenantAndUserUnitOfWork
让我印象深刻并且可以自由解释(这不是您在面向对象的世界中所期望的,还是我错了?)