MVC5动态更改数据库和实体模型类

时间:2016-01-14 23:47:40

标签: c# entity-framework asp.net-mvc-5

我可以使用以下代码动态切换数据库:

public MyEntities() : base("name=MyEntities")
{
}

但是这仍然使用旧的Model类。我在某处读到模型类应该是相同的,以便切换到不同的数据库。但是我每次数据库更改时都需要更改/重新加载模型类。

仅供参考,我需要这样做,因为开发数据库架构在Stage和Production非常稳定的同时不断变化。由于模型是使用开发数据库生成的,因此它们与生产/阶段类不同。

1 个答案:

答案 0 :(得分:1)

简短版本就是你错误地思考它。您不能只将您的连接字符串指向具有不同架构的数据库:它不会以这种方式工作,并且会破坏您的所有代码。您需要使代码架构与数据库架构保持同步。如果你真的有(比方说)三个不同的数据库模式需要同时交谈,那么你需要三种不同的代码模式。

换句话说,如果您正在处理一些应该针对您的本地开发数据库运行的代码,该数据库具有与生产数据库不同的模式,您不能只更改连接字符串并将其指向生产D B。它不会运行,也不应该运行。

如果您确实需要在该场景中针对生产数据库运行/编写/调试代码,您应该拥有一个“生产”(或主)分支,该分支具有与生产数据库模式匹配的正确代码模式,并切换到在编写那种代码时(例如,对于补丁或其他东西),该分支。然后,当您将补丁提交给master时,您可以将该提交合并回您的开发分支,然后继续。