【发布时间】:2015-11-21 17:04:44
【问题描述】:
我正在尝试在领域驱动设计项目中使用实体框架。
在我的理解中,Domain 层应该不知道任何持久性实现。所以我有两个接口——IRepository 和IUnitOfWork。我在Data 层中提供了实现。
我的问题是我似乎找不到避免在IRepository 或IUnitOfWork 中使用实体框架的IDbSet 的方法。
我想问 2 个问题 - 我如何从 Domain 层抽象实体框架?而且 - 如果我切换到 NHibernate,我可以完全避免这个问题吗?非常感谢。
【问题讨论】:
-
你可以使用 IQueryable 代替 IDbSet
-
谢谢,我考虑过,但是我无法添加或插入数据。因为我需要对 DbSet
. 的引用 -
如果你在你的 Repository 方法实现顺便说一句,你可以将它转换回 IDbSet。
-
为什么不能抽象出
IDbSet?显示一些代码来说明你的观点。 -
@user4811392:你能详细说明为什么你不能在 repo/uow 中避免 IDbSet 吗?人们每天都这样做,不费吹灰之力。您提到的添加/更新不需要数据库集(它们在实现中需要数据库集,但在抽象中不需要)。那你有什么具体问题?
标签: entity-framework domain-driven-design