我正在根据存储库模式、聚合根和工作单元来构建我的应用程序。我正在使用 Entity Framework5 作为 ORM。
我处于一种情况,我不知道如何继续添加新实体,这些实体是聚合根并且与非聚合根的实体具有外键关系。
我不确定我之前的陈述是否有意义,但让我在这里举个例子。
Db 中的人员表(这是我的应用程序中的聚合根)
- 姓名
- 地址第一行
- 国家ID
国家表(这不是一个聚合根,因为我可能永远不需要独立查询它们)
- 国家ID
- 国家的名字
在我的应用程序中,我有 PersonsRepository,它实现了一个通用存储库,其中 T 是一个聚合根。
现在,当我在我的代码中创建一个新人时,我需要将 Country 添加到 Person 对象的导航属性中。如果我创建一个新的 Country 对象并将其分配给 Person 的 Country 属性并尝试保存 Person 对象,则 EF 会引发错误。我无法查询国家表,因为它不是我的聚合根。
好吧,这不是我的实际情况,但这是我想要克服的。我应该如何从这里开始?
我想到的一个想法是创建一个通用的只读存储库,用于查询数据库而不是修改它,这是继续的好方法还是我做错了什么。
提前感谢您的回复和阅读长篇文章。