1

好吧,我定义了我的根。根内的实体允许引用同一根内的其他实体,但不在外部。在那里他们只能拥有身份或相关实体。这非常棒。DDD,EF和参照完整性

但是,我使用EF5和导航属性越来越多。我真的只想定义导航属性的实体是在聚合内。但是,如何在相关实体处于不同集合中时应用一些参照完整性?是使用迁移手动添加FK的唯一选择吗?

再一次,但是...这将导致一些问题,因为我希望能够使用ReadOnlyRepositories从各处获取聚合数据。我不想进入CQRS,因为我感觉有太多的飞跃。我坚持需要第二个有界的上下文与一个新的集(或可能派生集)的实体额外的导航属性定义?所有我可以编写查询来从多个根中获取数据?

+0

CQRS意味着一个大飞跃?为了大声哭泣,它只是意味着除了域模型之外还有一个读取模型。 – MikeSW 2013-05-03 13:30:51

+1

既然你的数据库负责参照完整性,你能不能简单地忽略EF模型中的关系?因此,在数据模型中也无法导航。 – 2013-05-04 08:18:50

回答

1

需要引用完整性通常表示更深层次的问题。为什么你需要在两个表中都存在实体标识符?这种方式是一致的吗?为什么没有明确的模型?这些问题不像答案那么重要。也意识到通过在相同的数据库模式(和适当的索引)上使用其他技术,您的许多问题可能会消失。谁知道,你可能在那个时候正在做CQRS。