我正在构建我的应用程序,其中包括存储库模式,聚合根和工作单元。我正在使用Entity Framework5作为ORM。存储库模式和聚合根模式以及实体框架
我处于这种情况,我不知道如何继续添加聚合根,并且与不是聚合根的实体有外键关系的新实体。
我不确定我是否理解了我以前的陈述,但让我在这里举一个例子。
人表在DB(这是一个总的根在我的应用程序)
- 名称
- 地址行1
- CountryID
国表(这不是因为我可能永远不需要独立查询它们)
- CountryID
- 国家名称
在我的应用我有PersonsRepository它实现了一个通用的存储库,其中T是一个聚合根。
现在,当我在我的代码中创建一个新人时,我需要将Country添加到Person对象的导航属性中。如果我创建一个新的Country对象并将其分配给Person的Country属性并尝试保存Person对象,则EF将引发错误。我无法查询Countries表,因为它不是我的Aggregate根。
嗯,这不是我的实际情况,但这是我想要克服的。我应该如何从这里出发?
我想到的一个想法是创建一个通用的只读存储库,它将用于查询数据库而不是修改数据库,是继续执行还是出现错误。
在此先感谢您的回复和阅读长篇文章。
什么错误EF抛出? – 2013-02-10 20:24:36
它引发“无法投人Person对象键入国家”,我认为这是完全有效的,为什么我应该创建一个新的国家对象时,它是一个外键在DB中。它工作得很好如果我使用datacontext获取Country,并在创建它时将其分配给Person对象。 – 2013-02-10 23:45:47