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

时间:2013-10-08 14:22:32

标签: entity-framework entity-framework-5 ef-model-first

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

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

  
    

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

  

我一直在检查这个框,我得到的结果是预期的并且对我有意义:单击图中的导航属性会突出显示将两者绑定在一起的两个实体中的相关字段。

但是,不检查此框是什么意思?我试过这个,然后我在实体中看不到存储对父表的主id的引用的地方。我是否更正导航属性不会在数据库中存储任何数据?如果是这样,这怎么可行呢?我是否可能希望手动将导航属性映射到实体上的Int32字段?

1 个答案:

答案 0 :(得分:2)

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