1

使用 Entity Framework,我创建了一个应用程序,该应用程序能够从对其建模的数据库中读取数据。我现在有另一个数据库,具有相同的表,托管在另一台服务器上。

问题是第二个数据库上的表属于与原始名称不同的模式,因此仅在 app.config 文件中更改我的上下文的连接字符串是行不通的。(我收到错误“表或视图不存在”)。在自动生成的代码中的某处必须有一些映射,说明原始模式名称。

处理这种情况的正确方法是什么?我真的不想重新建模第二个数据库,因为它与第一个相同。我无法更改数据库,因为其他应用程序将停止工作。

任何朝着正确方向的轻推将不胜感激。

4

1 回答 1

0

好的,这就是我为解决这个问题所做的。

正如@Kelmen 在评论中提到的,在文本编辑器中打开 EDMX 文件显示这是存储模式信息的位置。所以我想我可以简单地清除模式属性的值并使用连接字符串来驱动模式。

这感觉不对,有几个原因:

  1. 如果模型在任何时候被刷新,它可能会重新填充模式名称,这真的很烦人。我没有时间测试这是否真的会发生。

  2. 如果我确实需要在运行时更改它,这个方法不会让我控制模式名称。

解决方案是使用 Code First 和 Fluent API 在我的派生 DbContext 类中的 OnModelCreating 事件中编辑模型配置。

我现在正在考虑修改我的上下文类,以便我可以传入模式的名称,或者可能从我的 app.config 中驱动它。

我发现链接教程非常有用:

更改实体框架的架构

每个连接的实体框架更改架构名称

于 2013-04-29T20:09:44.847 回答