领域无法了解持久性层,换句话说,领域与EF完全分离。但是,要将数据持久化到数据库中,每个实体必须附加到或添加到EF上下文中。我知道应该使用工厂创建聚合根的实例,因此工厂可能会将创建的实体注册到EF上下文中。这似乎违反DDD规则,因为工厂是领域的一部分,而不是持久性层的一部分。我该如何创建和注册实体,以便在需要时正确地将它们持久化到数据库中?
聚合实体是否应该创建其子实体?我的意思是,如果我有一个组织,这个组织有一组员工实体,那么组织是否应该有一个名为CreateEmployee或AddEmployee的方法?如果不是,创建员工实体应该放在哪里,记住组织聚合根“拥有”每个员工实体。
使用EF代码优先时,每个实体的ID(以数据库中的标识列形式)都自动处理,通常不应由用户代码更改。由于DDD声明领域是与持久性无关的,因此在域中公开ID似乎是一件奇怪的事情,因为这意味着域应该处理为新创建的实体分配唯一ID。我是否应该担心公开实体的ID属性?
提前感谢!