【问题标题】:Entity Framework Code First POCOs and reasons why / why not setup relationships?实体框架代码优先 POCO 以及为什么/为什么不建立关系的原因?
【发布时间】:2011-04-11 19:31:48
【问题描述】:

我不确定如何准确表达我的问题,我可能会根据一些反馈对其进行更改。

什么时候最好设置参考关系(在我的 POCO 中),这样我就可以从孩子那里查找父记录,或者反过来?总是有办法“反向”查找项目或项目集合是一种好习惯吗?我知道这在很大程度上取决于我的应用程序,但我只想在开始塑造我的应用程序之前确保这一点。 所以,假设我有两张表:States 和 Country。国家与国家有关系(多对一),反之亦然(一对多)。我的 state 类将具有 Country 的属性,而我的 Country 类将具有 state 集合的属性。这是相当标准的。

在该示例中,允许一个国家/地区查找关联的州可能是有意义的。有人能想到我可能不关心该关联的时间,因此我没有为集合或单个项目加载项目的开销吗?

【问题讨论】:

  • 所以你的问题不是如何这样做,而是为什么你会这样做?对吗?
  • @Sergio:是的。我打算把它放在我的标题中。我更新了。

标签: c# entity-relationship entity-framework-4.1


【解决方案1】:

更多的是关于实体的设计决策。如果您首先使用代码,则始终需要导航属性on at least one side 来在数据库中创建关系。您可以从一种简单的方法开始,在有意义的一侧定义属性,并仅在您需要时将其添加到另一侧。

在某些情况下,您知道如果没有父实体,您将永远不会使用子实体(这导致了关于聚合根的理论,即子实体在没有父实体的情况下无法存在)。在这种情况下,孩子不需要对父母有导航属性。

在您的场景中,您是否希望在没有 Country 的情况下使用 State?如果是,您可能想知道StatesCountry 包含哪个,但同时您可能想知道CountryState 属于哪个,因此在双方定义导航属性感觉。

【讨论】:

  • 这正是我要找的,你发送的链接也很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 2012-10-11
  • 2017-07-05
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多