0

我有一个 MVC 代码优先解决方案,并且该解决方案在我的生产服务器上运行。

我现在对模型进行了一些更改,这在我的开发计算机上提供了一个新的空数据库。

我现在的问题是:

1)将数据从生产数据库获取到我的开发计算机的最佳方法是什么?我试图从生产中生成“仅数据”脚本,但这没有用。

2) 在不丢失数据的情况下将新结构实施到生产服务器的最佳方法是什么?

我正在使用VS2012专业版。

编辑

以下对我有用

1)备份产品服务器的数据库并在本地恢复

2)使用VS2012中的模式比较来更新db上的模式restored db

3)将恢复的数据库重命名为本地的原始名称(现在我有一个本地数据库,其中包含来自 prod 的数据和正确的模式)

4)备份本地数据库并在服务器上恢复(现在服务器上的数据库具有正确的架构)

我必须更换的唯一故障

Database.SetInitializer(new myDbInitializer());

Database.SetInitializer < myContext > (null);

确保系统不会尝试删除/创建数据库。

4

1 回答 1

1

将数据从生产数据库获取到我的开发计算机的最佳方法是什么?我

除非安全是一个问题,否则备份/恢复。这有时不合法,然后是备份/恢复/加扰或数据生成器(如果不允许开发人员查看数据)。

在不丢失数据的情况下将新结构实施到生产服务器的最佳方法是什么?

生成一个脚本来更新数据库。观点。

可悲的是,“点”就像“好莱坞标志大字母”中的“点”,因为它是一个你自己留下的区域。您可以进行模式比较,甚至生成增量脚本,但它们是非常原始的。插入(元数据)、清理操作、重命名都会导致问题。

最好的是:

  • 生成增量
  • 手动将其转换为适当的形式。
  • 在更新期间,应用 delta 脚本。

实际上可能是最好的方法,因为架构增量无法正确处理很多事情。

一个例子 - 我们现在正在处理一个非规范化的表并将其规范化(变为 4),然后将其替换为一个视图。

delta 脚本必须生成规范化值、新表,在那里进行插入,然后生成视图。

涉及逻辑 - 自动增量无法处理它。

于 2013-01-16T21:21:25.190 回答