好的,我已定义了我的根。允许对根内的实体引用同一根内的其他实体,但不允许引用到外部。在那里,他们只能拥有身份或相关实体。这一切都很棒。
但是,我正在使用EF5,导航属性正在阻碍。我真的只想定义实体在聚合中的导航属性。但是,如果相关实体位于不同的聚合中,我如何应用某些参照完整性?是使用迁移手动添加FK的唯一选项吗?
再次,但是......这会引起一些问题,因为我希望能够拥有ReadOnlyRepositories来从所有地方获取聚合数据。我不想进入CQRS,因为我觉得有太多的飞跃。我是否需要使用具有额外导航属性的新集(或可能派生集)实体的第二个有界上下文?所以我可以编写从多个根中提取数据的查询吗?
答案 0 :(得分:1)
需要参照完整性通常表明更深层次的问题。为什么两个表中都需要实体标识符?什么是这样一致的?那为什么不明确建模呢?这些问题并不像答案那么重要。还要意识到,通过在相同的数据库模式(和适当的索引)上使用其他技术,您的许多问题都可能消失。谁知道,你可能正在那时做CQRS。