【发布时间】:2014-10-26 20:29:46
【问题描述】:
我目前正在尝试定义某些基类和接口以在 DDD 和 CQRS 项目中使用它们,但是我正在努力定义 聚合 和 聚合根.
蓝皮书告诉我们...
- 聚合是对象的集群
- 每个聚合都有一个聚合根
- 聚合根是一个特定的实体,是应用程序其他部分可以引用的唯一对象。
为此,我制作了以下类/接口:
实体
public interface IEntity<TKey> {
TKey Key { get; set; }
}
public abstract class EntityBase<TKey> : IEntity<TKey> {
// key stuff, equality comparer..
}
聚合根
public interface IAggregateRoot<TKey> : IEntity<TKey>
{
}
存储库
public interface IRepository<TAggregate, TRoot, TKey>
where TAggregate : IAggregate<TRoot>
where TRoot : IAggregateRoot<TKey>
{
TRoot Root { get; set; }
void Add(TAggregate aggregate);
}
现在,我理解正确了吗?那么聚合界面会是什么样子呢?
public interface IAggregate<TRoot, TKey>
where TRoot : IAggregateRoot<TKey>
{
}
我试图找到一些参考资料,并在 CQRS 框架中找到了以下实现:(CQRS 与 DDD 有很大不同吗?我认为在不应用事件溯源时几乎相同)
public abstract class Entity<TAggregateRoot> where TAggregateRoot
: AggregateRoot
{
}
【问题讨论】:
-
'CQRS 与 DDD 有很大不同吗?'。恕我直言,它们完全不同。
标签: c# design-patterns repository domain-driven-design cqrs