1

我在玩实体框架模型设计器,我有一个关于创建实体关联的问题:

在“创建关联”对话框中,当我创建1:many关联时,它提供了此复选框:

“将外键属性添加到 [entityname] 实体”

我一直在选中此框,我得到了预期的并且对我有意义的结果:单击图表中的导航属性会突出显示将它们联系在一起的两个实体中的相关字段。

但是,不选中此框意味着什么?我已经尝试过了,然后我看到实体中没有地方可以存储对父表的引用的 primary id。我是否正确导航属性不在数据库中存储任何数据?如果是这样,这怎么可能?我是否应该手动将导航属性映射到Int32实体上的字段?

4

1 回答 1

2

关联表示实体之间的关系。在数据库(关系模型)中,这些关系是通过使用外键和 - 在多对多的情况下 - 连接表来建模的。在对象模型中,关系通常被建模为对相关对象的引用(在 EF 中,它们通常被称为导航属性)。当您需要在对象模型中创建或修改关系时,问题就出现了——您总是需要引用您想要设置的相关对象。在纯对象模型中,这通常不是问题,但在 ORM 的情况下,这意味着如果您没有相关实体,则需要向数据库发送查询以获取能够设置引用的对象。然而,即使您没有相关实体,您也经常知道相关实体的 ID。所以,如果在您的对象模型中公开(并处理)了外键属性,您可以创建或修改关系,而无需向数据库发送额外的查询。这就是复选框的意义所在。如果您检查它,您的实体将具有(从对象模型的角度来看无关的)属性映射到数据库中的外键列,您可以使用这些列来操作关系。

于 2013-10-09T14:41:59.247 回答