我正在尝试在一个领域驱动设计项目中使用实体框架。
在我的理解中,Domain层应该对持久性实现一无所知。所以我有两个接口-- IRepository和IUnitOfWork。我提供了Data层的实现。
我的问题是,我似乎找不到一种方法来避免在IRepository或IUnitOfWork中使用实体框架的IDbSet。
我想问两个问题--如何从Domain层抽象实体框架?如果我切换到NHibernate,我能完全避免这个问题吗?非常感谢。
发布于 2015-11-24 14:14:55
在存储库接口上,定义查找方法,如
Task<MyAggregate> FindById(MyAggregateId id);和赋值方法,如
Task Update(MyAggregate aggregate);这清楚地表明存储库在其接口上使用域对象-封装完成!
如果您稍后切换到NHibernate,则需要在域和服务层中更改以下内容:Nothing。
注意:之所以有Task<T>和Task返回值,是因为存储库交互最好是异步实现的。如果你不需要/想要它,你也不需要任务包装器。
https://stackoverflow.com/questions/33846137
复制相似问题