实体框架代码第一个POCO和原因为什么/为什么不建立关系?

时间:2011-04-11 19:31:49

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

我不确定如何真正说出我的问题,我可能会根据一些反馈来改变它。

如果最好有参考关系(在我的POCO中)设置,那么我可以从孩子或相反的方向查找父记录?总是有一种方法来“反向”查找项目或项目集合是一种好习惯吗?我知道这在很大程度上取决于我的应用程序,但我只想在开始模拟我的应用程序之前确保这一点。  所以,假设我有两个表:国家和国家。国家与国家(多对一)有关系,反之亦然(一对多)。我的州级国家将拥有国家的财产,而我的国家级国家将拥有国家集合的财产。这是非常标准的。

在该示例中,允许国家查找关联状态可能是有意义的。有人会想到我可能不关心那个关联的时间,所以我没有为一个集合或一个项目加载项目的开销吗?

1 个答案:

答案 0 :(得分:2)

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

在某些情况下,您知道如果没有父项,您将永远不会使用子实体(它会导致关于聚合根的理论,如果没有父项,子实体就不能存在)。在这种情况下,子项不需要具有父项的导航属性。

在您的方案中,您希望使用State而不使用Country吗?如果是,您很可能想知道States Country包含哪个Country,但在同一时间您可能想知道State {{1}}属于哪个{{1}}因此,双方定义导航属性是有道理的。