gpt4 book ai didi

.net - 存储库模式和聚合根模式和 Entity Framework

转载 作者:行者123 更新时间:2023-12-01 11:46:32 24 4
gpt4 key购买 nike

我正在按照存储库模式、聚合根和工作单元来构建我的应用程序。我正在使用 Entity Framework5 作为 ORM。

我处于这样一种情况,我不知道如何继续添加新实体,这些新实体是聚合根并且与非聚合根的实体具有外键关系。

我不确定我之前的陈述是否有意义,但让我在这里举个例子。

Db 中的人员表(这是我应用程序中的聚合根)

  1. 姓名
  2. 地址行 1
  3. 国家ID

国家表(这不是聚合根,因为我可能永远不需要独立查询它们)

  1. 国家ID
  2. 国家名称

在我的应用程序中,我有 PersonsRepository,它实现了一个通用存储库,其中 T 是聚合根。

现在,当我在我的代码中创建一个新人时,我需要将 Country 添加到 Person 对象的导航属性中。如果我创建一个新的 Country 对象并将其分配给 Person 的 Country 属性并尝试保存 Person 对象,EF 会抛出错误。我无法查询 Countries 表,因为它不是我的聚合根。

好吧,这不是我的实际情况,但这是我要克服的问题。我应该如何从这里开始?

我想到的一个想法是创建一个通用的只读存储库,用于查询数据库而不是修改它,这是继续进行的好方法还是我做错了什么。

预先感谢您的回复和阅读长篇文章。

最佳答案

聚合根不仅仅是你可能不需要直接查询的东西。根据您的推理,您将不得不多次创建同一个国家/地区,因为您无法查询该国家/地区是否存在(即该国家/地区是一个弱表,需要 Person 存在)。

简而言之,聚合根是无需其他任何东西就可以识别的对象。一个国家可能没有人而存在,而没有订单就无法识别订单行。您可能想阅读这篇文章:http://dddcommunity.org/library/vernon_2011

至于 Entity Framework ,请检查我对存储库/uow 的实现:http://blog.gauffin.org/2013/01/repository-pattern-done-right/

关于.net - 存储库模式和聚合根模式和 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14799645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com