在 EF 4 上映射外键而不创建新的 Edmx 文件

Posted

技术标签:

【中文标题】在 EF 4 上映射外键而不创建新的 Edmx 文件【英文标题】:Mapping foreign keys on EF 4 without creating a new Edmx file 【发布时间】:2012-07-17 07:15:36 【问题描述】:

我通过取消选中为外键创建实体的选项创建了 edmx 文件。所以我的外键字段没有映射。是否可以在不创建新 edmx 文件的情况下映射外键?如果可能的话如何。?我从已有的数据库中创建了 .edmx。我正在使用 VS 2012。谢谢。

【问题讨论】:

问题是您不想重新创建 edmx?还是您想以编程方式进行? @Boomer 我怎样才能做到这一点? 【参考方案1】:

在 edmx 中单击鼠标右键,从数据库中点击更新模型。那里有一个外键复选框。这就是你要找的吗?

【讨论】:

这很糟糕,除了手动添加所有外键会很痛苦之外,我认为您只需要删除并重新添加 edmx。不过这真的没那么糟糕,我最终不得不在某些项目上每隔几个月做一次,即使数据库有几百个表,也只需要不到 5 分钟。 @VeeKayBee 打开您的 .edmx 文件,右键单击从数据库中选择更新模型。在“添加”选项卡中,单击您添加的表,然后单击“完成”。我也在这样做。但有时我也会删除我的 .edmx 并创建一个新的。 :D 但请记住在 Web.Config 中删除之前 .edmx 文件的连接字符串,因为它会创建一个新的.. :)【参考方案2】:

如果 edmx 模型生成有任何问题(如果您更改选项并尝试部分刷新,可能会发生这种情况),完全刷新模型的最简单方法是选择所有内容(例如 Ctrl-A)并删除该批次从模型。

然后右键单击空型号,然后选择“从数据库更新模型”,选择要再次包含的所有表,以及选中或未选中的相应选项(如“在模式下”包含外键列)“)。

如果您尝试进行部分更新,此序列往往会清理出现的问题。它当然会删除您对该模式所做的任何自定义(额外导航等),但通常是最简单的 edmx 问题解决方案。

【讨论】:

我的一些队友正面临这个问题。我会告诉他们检查并更新您。感谢您的回复【参考方案3】:

您可以删除并再次添加模型。我希望这会奏效。 :)

【讨论】:

以上是关于在 EF 4 上映射外键而不创建新的 Edmx 文件的主要内容,如果未能解决你的问题,请参考以下文章

获取主键而不插入空行

使用映射从 edmx 生成 dbcontext 对象

通过 sqlalchemy 映射类在 MySQL JSON 字段中插入键而不进行查询

修改对象的键而不创建新对象[重复]

CREATE UNIQUE INDEX 语句因发现重复键而终止 EF

EF自动生成的模型edmx代码分析