首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与不同数据库兼容的实体框架DbContext

与不同数据库兼容的实体框架DbContext
EN

Stack Overflow用户
提问于 2013-04-26 15:56:21
回答 1查看 327关注 0票数 1

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

问题是第二个数据库上的表所属的模式与原始数据库的名称不同,因此简单地更改app.config文件中我的上下文的连接字符串是不起作用的。(我得到错误“表或视图不存在”)。在自动生成的代码中,必须有某种映射来声明原始模式名称。

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

任何在正确方向上的推动都将受到极大的赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-30 04:09:45

好的,下面是我为解决这个问题所做的工作。

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

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

  1. 如果在任何时候刷新了模型,它可能会重新填充模式名称,这将非常恼人。我没有时间测试这是否真的会发生。
  2. 如果我确实需要在运行时更改架构名称,此方法不会让我控制它。

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

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

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

Change Schema of Entity Framework

Entity Framework Change Schema Name Per Connection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16231412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档