域实体中的外键属性

时间:2013-12-12 07:50:56

标签: c# entity-framework domain-driven-design repository-pattern poco

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

假设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列。

1 个答案:

答案 0 :(得分:3)

如果使用外键,实体框架中的生活会更容易:

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