Entity framework 实体框架模型优先:添加关联而不创建外键属性?

Entity framework 实体框架模型优先:添加关联而不创建外键属性?,entity-framework,entity-framework-5,ef-model-first,Entity Framework,Entity Framework 5,Ef Model First,我正在使用实体框架模型设计器,我有一个关于创建实体关联的问题: 在“创建关联”对话框中,当我创建1:many关联时,它提供以下复选框: “将外键属性添加到[entityname]实体” 我选中了这个框,得到了预期的结果,并且对我来说是有意义的:单击图表中的导航属性会突出显示将它们连接在一起的两个实体中的相关字段 但是,不勾选此框意味着什么?我已经尝试过了,但是我发现实体中没有存储对父表的主id的引用的位置。导航属性没有在数据库中存储任何数据,这是正确的吗?如果是这样的话,这怎么可能呢?我是否需要

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

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

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

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


但是,不勾选此框意味着什么?我已经尝试过了,但是我发现实体中没有存储对父表的主
id
的引用的位置。导航属性没有在数据库中存储任何数据,这是正确的吗?如果是这样的话,这怎么可能呢?我是否需要手动将导航属性映射到实体上的
Int32
字段?

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

FYI,我只是尝试使用两个实体,对关联没有任何限制。EF似乎会在子表上自动创建一个字段[parent_id]。