DDD:为实体及其状态创建存储库

问题描述 投票:0回答:1

我在我的域中有一个实体,需要跟踪其状态。我为此有一个处理程序。此状态类似于InProgressCompletedDeleted。我使用SQL API CosmosDb来存储该数据。

在CosmosDb内部,我为那些创建的实体创建了一个容器,并为其状态创建了另一个容器。因此,在代码内部,我为这两个容器有两个存储库。

internal interface EntityRepository
{
   Task AddAsync(Entity entity);
}

internal interface EntityStatusRepository
{
   Task AddAsync(EntityStatus entityStatus);
}

并且为每个存储库,我创建了一项服务

public interface EnityService
{
    Task AddAsync(Entity entity);
}

public interface EntityStatusService
{
   Task AddStatusAsync(EntityStatus entityStatus)
}

这些服务已公开为处理程序的公共接口,而不是存储库。

现在我真的很奇怪

  • 基于DDD并具有一个实体及其状态,我应该创建两个分离的存储库,还是应该将它们作为一个存储库,因为它们是一个上下文?

  • 我需要通过一项服务公开实体及其状态吗?

我想知道是否有人提出建议甚至更好的解决方案?

c# tdd domain-driven-design repository-pattern azure-cosmosdb-sqlapi
1个回答
0
投票

我不是DDD专家-只是通过Implementing DDD来阅读Vernon,但是根据我的经验,您对bounded context有问题。您的模型EntityEntityStatus可能密切相关。在这种情况下,仅当您自己需要一个EntityStatusRepository的地方时,才应创建EntityStatuses。如果您都需要它们,只需单击EntityRepository

© www.soinside.com 2019 - 2024. All rights reserved.