我在我的DDD应用程序中使用Entity Framework,其中我有Domain、Infra和UI层。
我的上下文界面在这里:
public interface IDbContext
{
IDbSet<TEntity> Set<TEntity>() where TEntity : class;
DbEntityEntry Entry<TEntity>(TEntity entity) where TEntity : class;
void SaveChanges();
}我的上下文接口实际上位于域层。
你怎么看,我的上下文依赖于Entity Framework,因为我的基础存储库和整个应用程序都在使用它。
我应该把这个接口放在哪里?把它移到基础设施?我想将我的领域与任何技术隔离开来。
发布于 2011-08-18 03:53:43
你应该把接口移到ifra层。此外,您还应该确保此接口或实现此接口的任何类型不会直接在任何其他层中使用,因为一旦您在其他地方访问DbSet或DbEntityEntry,就会有一个依赖项。
发布于 2012-05-05 07:01:22
我认为你应该忘记直接使用IDbContext接口。一个更好的解决方案,IMHO,是在您的域上定义repository接口,而不引用任何实体框架,并且在基础架构层中,您将为该存储库定义实现。
对模型的任何查询都将通过存储库完成,而存储库又返回一个模型或模型的IEnumrable。
https://stackoverflow.com/questions/7098554
复制相似问题