【发布时间】:2014-06-11 11:50:56
【问题描述】:
我只是打算编写基于 DDD 的演示应用程序。我的存储库使用实体框架 ORM,一切都很好。 MVC 和 Windows 窗体应用程序调用存储库方法并且有效。但是如果我决定用 Dapper 或 NHibernate 替换 Entity Framework 或者我的数据来自 Web 服务怎么办?我知道我需要重写存储库实现,但是我的业务逻辑是什么。业务逻辑现在放置在存储库中。一些示例在控制器中有业务逻辑,但我有多个客户端。我需要在存储库上方放置一些层吗?在 DDD 的概念中,该层的名称是什么。
【问题讨论】:
-
如果您的业务逻辑在存储库中,则您没有使用 DDD。事实上,你离 DDD 有多远,你可以来。购买 DDD 书,阅读它,然后提出一个新问题。或者干脆从您的问题中删除 DDD 引用。
-
业务/领域逻辑应该在你的领域层(领域实体或服务);和应用层中的应用/业务逻辑。您的存储库应该不了解任何领域或业务逻辑,并专注于数据逻辑。
-
域层?业务层?
-
@L-Three:可以改进该系列文章中的存储库实现以降低复杂性(通用存储库在开始时似乎是个好主意,但与使用 ORM 接口相比,它们没有任何好处直接地)。要么正确实现该模式,要么干脆不使用它。
标签: c# repository-pattern