c# - 域实体中的外键属性

标签 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 数据库中,数据将由 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/

相关文章:

oop - 为什么建议避免使用 java-bean 风格来创建域对象?

c# - 最小化应用程序时捕获媒体键

c# - C#:测试是否在父类(super class)的实例中而不是子类中的一个类

c# - 应用程序如何在不需要端口转发的情况下连接到服务器?

entity-framework - 将新模型添加到模型属性时出现 NullReference 错误

c# - 无法在 .Net Core RC2 中添加 View

c# - 从贫血领域到领域驱动

c# - Entity Framework CreateObjectset 附加方法不更新

visual-studio-2008 - Fluent NHibernate 类作为域类的代码

c# - WPF MVVM 与 Razor 页面 MVVM