【发布时间】:2017-01-11 03:13:28
【问题描述】:
我已经开始使用 C# 学习和创建带有事件溯源的 CQRS。我检查了很多示例,在每个示例中,在构造域对象时,所有必需的域字段要么使用构造函数传递,要么通过静态方法传递来创建域对象。
我应该将完整的 DTO 传递给域对象以构造它,而不是传递从顶层获取的一长串单个字段吗?
public class Student : AggregateRoot
{
public int ID { get; set; }
public string Name { get; set; }
// Without ID and Name a domain object should not be created
//Can I write like this?
public Student(StudentDto studentDto)
{
ID = studentDto.ID;
Name = studentDto.Name;
}
//Can I write like this?
public Student(int id,string name)
{
ID = id;
Name = name;
}
}
【问题讨论】:
-
什么是
AggregateRoot和StudentDto -
作为旁注,域模型不应该有关于 DTO 的知识。
-
AgfregateRoot 是我所有聚合的基类,StudentDto 只是一个将数据从我的服务层传输到其他层的类。如果域模型不应该对 dtos 有任何了解,那就解决了我的问题.我需要传递单个字段而不是完整的 dto。如果我错了,请纠正我。
标签: c# oop domain-driven-design cqrs