域实体中的外键属性

Dav*_*New 7 c# domain-driven-design entity-framework poco repository-pattern

在领域驱动设计中,领域模型应该完全不知道任何数据持久化细节。

假设 anEmployee属于 a 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; }
}
Run Code Online (Sandbox Code Playgroud)

Employee.DepartmentId在域模型真正相关的或者是基础设施存储的细节?

Employee.Department在这个层面上,这种关系肯定很重要吗?

就我而言,这些实体将存储在 SQL 数据库中,数据将由实体框架检索,因此Employee.DepartmentId数据库中将存在一列。

Col*_*lin 5

如果您使用外键,则实体框架中的生活会更轻松:

为什么实体框架将现有对象重新插入我的数据库?

凑合着不存在的外键

而且您说外键与域模型并不真正相关是绝对正确的。它是持久性模型的一部分。

所以你需要决定加入哪个阵营。你是纯粹主义者还是实用主义者?是否分离域模型和持久性模型?

ORM 实体与实体框架 6.0 下的域实体