【发布时间】:2013-12-30 12:45:14
【问题描述】:
在域驱动设计中,域模型应该完全不知道任何数据持久性细节。
假设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 列。
【问题讨论】:
-
这里的问题是您正在重新使用主键(数据库概念)作为域模型中的对象标识。实体应具有在模型中定义的自然/代理身份 - 例如,这可能是一个指南。这将用于查询存储库。数据库行 id 只是持久化平台的一个实现细节。
标签: c# entity-framework domain-driven-design repository-pattern poco