0

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

更新:我创建了一个新项目,添加了一个 edmx,将其指向 2008r2 数据库实例,选择了我知道有关联但设计器未能获取关联的表。我需要在 SQL 服务器上安装什么东西才能让 EF 工作吗?

4

2 回答 2

4

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

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

这是我用来检查我的外键使用了哪些索引的 SQL 查询: 有问题的 FKSELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C ORDER BY CONSTRAINT_NAMEUNIQUE_CONSTRAINT_NAME列应该指向一个集群 PK 才能工作。

于 2012-06-04T13:41:50.153 回答
0

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

于 2012-06-01T16:03:45.997 回答