在具有实体框架的DDD中,Context Interface应该在哪里生存?

时间:2011-08-17 19:49:10

标签: .net entity-framework domain-driven-design

我在我的DDD应用程序中使用Entity Framework,我有域,红外和UI层。

我的上下文界面在这里:

public interface IDbContext
{
    IDbSet<TEntity> Set<TEntity>() where TEntity : class;
    DbEntityEntry Entry<TEntity>(TEntity entity) where TEntity : class;

    void SaveChanges();
}

我的上下文界面实际上位于域层中。

你怎么看,我的上下文有Entity Framework的依赖,因为我的基础知识库和我的整个应用程序使用它。

我应该把这个界面放在哪里?把它移到Infra?我想隔离我的任何技术领域。

2 个答案:

答案 0 :(得分:1)

您应该将界面移动到ifra图层。此外,您应确保此接口或实现该接口的任何类型不会直接在任何其他层中使用,因为一旦您在其他地方访问DbSetDbEntityEntry,您就会有依赖。

答案 1 :(得分:0)

我认为你应该忘记直接使用IDbContext接口。更好的解决方案,恕我直言,将在您的域上定义存储库接口,而不引用实体框架,并且在基础结构层中,您将定义该存储库的实现。

对模型的任何查询都将通过存储库完成,而存储库又返回模型或IEnumrable模型。