2011-08-17 82 views
0

我在我的DDD应用程序中使用实体框架,我有域,Infra和UI层。在带实体框架的DDD中Context接口应该在哪里?

我的上下文接口是在这里:

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

    void SaveChanges(); 
} 

我的上下文接口实际生活领域层英寸

您如何看待,我的上下文具有实体框架的依赖性,因为我的基础知识库和我的整个应用程序都使用它。

我应该把这个接口放在哪里?将其移至Infra?我想要隔离我的任何技术领域。

回答

1

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

+0

为什么要将界面移到基础层?是否有DDD解释或其他动机? –

+0

该接口依赖于实体框架,并提到您希望将域从任何技术中分离出来。隔离=不依赖于该技术。 –

+0

是的,但是在DDD方法中这是正确的? –

0

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

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

相关问题