在领域驱动设计中,领域模型应该完全不知道任何数据持久化细节。
假设一个 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 数据库中,数据将由 Entity Framework 检索,因此
Employee.DepartmentId
列将存在于数据库中。
最佳答案
如果您使用外键,则 Entity Framework 中的生活会更轻松:
Why does Entity Framework Reinsert Existing Objects into My Database?
Making Do with Absent Foreign Keys
而且您说外键与域模型并不真正相关是绝对正确的。它是持久性模型的一部分。
所以你需要决定加入哪个阵营。你是纯粹主义者还是实用主义者?是否分离域模型和持久性模型?
ORM Entities vs. Domain Entities under Entity Framework 6.0
关于c# - 域实体中的外键属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537864/