【发布时间】:2016-08-15 01:41:22
【问题描述】:
目前我们正在mvc5中写一个页面,一个oracle sql数据库连接entitiy framework 6。
我们目前在 oracle 数据库中有两种模式,一种用于测试,另一种用于开发。实体框架中的模型是从开发数据库生成的,并且可以与它完美配合。
问题来了,将连接字符串更改为测试模式时。更改连接字符串后,应用程序无法找到表(因为它们仍然引用开发方案)。
目前我可以通过从模型中删除所有表并从正确的架构重新创建模型或手动编辑引用该架构的每个文件来解决此问题。这两种解决方案都有些令人厌烦且容易出错。
这种情况通常如何处理?
编辑
似乎更改数据库并保留架构不会产生任何错误。所以这只是架构相关的。
【问题讨论】:
-
您可以选择更改为代码优先吗?在代码优先中,您可以在映射中指定架构。
-
@GertArnold 我可以试试。所以我可以从连接字符串中读取模式,并在映射中以编程方式设置它?
-
不,模式不是由连接字符串设置的,但是您可以自己在配置文件中添加任何条目,您可以通过它来设置模式。
-
@GertArnold 代码首先的问题是,为了创建表,它需要创建数据库。数据库必须保持不变,因为某些模式用于其他系统。
-
您可以使用代码优先而无需迁移。这只意味着当你改变数据库时,你也改变了模型。这并不像听起来那么糟糕,也许甚至比更新 edmx 更好,因为您 100% 处于控制之中。此外,对 edmx 的支持将在 EF7 中消失。