EF 4.3 DB第一个模型不导入关联

时间:2012-06-01 15:50:58

标签: sql-server-2005 sql-server-2008-r2 entity-framework-4.3

我们将数据库从SQL 2005实例移动到新的SQL 2008r2服务器。我们更改了应用程序中的连接字符串以指向新数据库,甚至修改了2005年到2008年的ProviderManifestToken。在我们尝试将数据库中的实体添加到现有的edmx模型之前,一切正常。我正在使用'数据库更新模型'向导将表添加到edmx图中。这些表将显示在图中,但只有一些表导入了它们的关联和/或外键。如果我切换连接字符串以指回旧的2005 sql实例,则所有内容都正确导入并且存在关联。如有必要,我很乐意提供更多详细信息。我根本找不到这种模式。是什么给了什么?

更新:我创建了一个新项目,添加了一个edmx,指向了2008r2数据库实例,选择了我知道有关联的表,但设计师未能获得关联。是否需要在SQL服务器上安装以使EF工作?

2 个答案:

答案 0 :(得分:4)

它现在正在运作。从web.config中删除连接字符串,然后使用“从数据库更新模型”并通过“添加新连接”对话框指向新服务器上的数据库,似乎使其行为正常。如果这停止工作,我会回发。

更新:原来我有两个问题。第二个是我们数据库中的一个表在同一列上有两个几乎相同的冗余索引;聚簇PK索引和唯一的非聚集索引。因此,每当我创建指向此表的外键时,数据库都会选择唯一的非聚集索引来强制执行约束(为什么?我不知道)。但实体框架并不喜欢它,也不会创建甚至不承认外键关联。我不得不删除额外的非聚集索引并重新创建所有外键,以便它们指向聚簇索引。完成后,我从数据库更新了我的模型,并且所有关联都存在。

这是我用来检查我的外键使用的索引的SQL查询:     SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C ORDER BY CONSTRAINT_NAME 有问题的FK的UNIQUE_CONSTRAINT_NAME列应指向群集PK以使其工作。

答案 1 :(得分:0)

您是如何将数据库移至2008 Server的?听起来好像没有迁移部分或全部关系/约束。这可以解释为什么当你指向2008数据库时,这些关联没有出现。

相关问题