1

I thought domain driven design is saying the Get-methods are in the Repositories and the Add/Del/Update are in the business objects?

Can you clarify this please?

When I look at the MVCMusicStore sample all CRUD methods to the database are in the entities ?!

http://mvcmusicstore.codeplex.com/SourceControl/changeset/view/d9f25c5263ed#MvcMusicStore%2fModels%2fShoppingCart.cs

4

3 回答 3

2

您发布的链接不是域驱动设计的示例,它只是说明了 MVC 模式。正如您所提到的,实体包含所有持久性逻辑,而业务逻辑主要位于控制器中。

在同一系统的领域驱动设计中,实体将包含任何持久性逻辑,但它们包含大部分业务逻辑。所有持久性功能都将驻留在存储库中,控制器(也称为服务)将非常薄,并将大部分工作委托给实体。

于 2012-08-06T04:41:06.440 回答
2

我刚刚回答了一个类似的问题,域模型可以知道存储库吗?(以及“保存”方法是否属于业务域实体?) - 似乎许多 DDD 问题都与 Active Record 与 Repository 的选择有关。

我会听从埃里克·埃文斯的建议

一般来说,不要与你的框架抗争。寻求方法来保持 DDD 的基本原理,并在框架对立时放弃细节。寻找 DDD 概念与框架概念之间的相似性。这是假设您别无选择,只能使用该框架。

因此,即使 DDD 的创建者意识到一些可能的不便,对我而言,Active Record 和 Repository 之间的选择取决于当前的技术堆栈。

于 2012-08-05T19:11:50.480 回答
0

这是典型的存储库的样子:

public class OrderRepository {
    public MyClass Load(Guid id); // throws an exception if not found
    public void Save(Order order);
    public void Delete(Guid id); // does not throw an exception if not found (idempotent)
}
于 2012-08-07T14:01:46.117 回答