【发布时间】:2015-12-12 23:00:39
【问题描述】:
当我尝试将 DDD 与 .NET 和 C# 一起使用时,我通常的过程是为域模型构建一个项目,为数据访问构建另一个项目,为应用程序本身构建另一个项目,例如 ASP.NET Web API。通常会涉及更多项目,但我通常会使用这三个。
我的意思是,在域模型项目中,我放置了所有业务规则。在那里我定义了域类型(实体、值类型、聚合等)和存储库接口。
我的意思是,在我定义了存储库接口之后,我会在一个单独的项目中实现。该项目是数据访问项目。我这样做的原因是,为了实现数据访问,我通常需要这样做的技术(如 ADO.NET、EF、Dapper 等)。
出于某些原因,我自己认为将这些依赖项耦合到 Domain 项目是一种不好的形式。我喜欢 Domain 项目是自包含的并且与任何技术分离。
另一方面,我有时听说存储库可能包含业务规则,应该在域项目内部实现。
哪种方法是正确的?我的方法是将存储库实现与域项目分离,以避免将技术依赖项耦合到域项目,还是允许存储库中的业务规则从而使存储库存在于域项目中的方法?
存储库真正应该在哪里?与域类型一起在域项目中还是在数据访问项目中?
【问题讨论】:
标签: c# .net oop domain-driven-design repository-pattern