【发布时间】:2020-03-06 07:00:21
【问题描述】:
我的域中有一个实体,我需要跟踪它的状态。我有一个处理程序来满足这个需求。此状态类似于InProgress、Completed 或Deleted。我使用 CosmosDb、SQL API 来存储这些数据。
在 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 并拥有一个实体及其状态,我应该创建两个独立的存储库还是应该将它们作为一个存储库,因为它们是一个上下文?
我是否需要通过一项服务公开实体及其状态?
不知道有没有人有建议甚至更好的解决方案?
【问题讨论】:
-
您的
Entity和EntityStatus是否密切相关?我猜是的,但要确认 -
你可以想到一个报告和它的状态
标签: c# tdd domain-driven-design repository-pattern azure-cosmosdb-sqlapi