在域驱动设计中,域模型应完全不知道任何数据持久性细节。
假设Employee
属于Department
。域实体可能如下所示:
public Employee
{
public string EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName{ get; set; }
public Department Department { get; set; }
public int DepartmentId { get; set; }
}
public Department
{
public string DepartmentId { get; set; }
public string Name{ get; set; }
}
Employee.DepartmentId
在域模型中是否真的相关,还是基础架构存储详细信息?
当然Employee.Department
是这个级别的重要关系吗?
在我的情况下,这些实体将存储在SQL数据库中,实体框架将检索数据,因此数据库中将存在Employee.DepartmentId
列。
答案 0 :(得分:3)
如果使用外键,实体框架中的生活会更容易:
Why does Entity Framework Reinsert Existing Objects into My Database?
Making Do with Absent Foreign Keys
你说外键与域模型并不真正相关是完全正确的。它是持久性模型的一部分。
所以你需要决定加入哪个阵营。你是纯粹主义者还是实用主义者?是否分离域模型和持久性模型?