我应该如何处理引用实体的持久性?

Vin*_*ves 3 c# domain-driven-design entity-framework repository

我正在使用实体框架和DDD。

如果我在两个实体之间有一个引用,我应该如何处理持久性?更新会级联吗?

假设雇主直接参考了其经理。

如果我更改Employee.Manager.Name并保存Employee,那么Manager的名称会更改吗?

Adr*_*ips 5

从DDD的角度来看,Manager从到a的任何链接Employee都应仅引用id(假设Managers它们不是Employee聚合根的一部分,并且本身Manager就是聚合根)。

基本上你的财产Employee.ManagerId应该返回一个ID,使您可以检索ManagerEmployee

这将与您使用Entity Framework开箱即用的许多“好处”背道而驰,但这在DDD中很常见。建议围绕业务域而不是数据库实现设计域模型。

我个人发现,在练习DDD时,将EF实体用作域模型不太适合。诸如延迟加载导航属性之类的事情与良好的DDD做法相矛盾。这些天,我倾向于在自己的项目中使用文档数据库,但是当我不得不使用SQL时,我将EF实体限制在我的持久层上,并对我的存储库进行编码,以从域模型返回非EF实体。