Asp.NET,MVC4.将数据从数据库迁移到新数据库
本文关键字:数据库 迁移 数据 NET MVC4 Asp | 更新日期: 2024-10-29 15:46:02
这是我第一次在这个很棒的网站上问一些东西,所以如果我违反了一些规则,请对我有礼貌。
所以,这是我的问题,我为某个客户开发了一款电子商务软件,Asp.NET 年,MVC4。 然后,我为另一个客户开发了另一个电子商务,显然是从最后一个开始的。现在我有两个类似的电子商务项目,区别仅在于我必须为新客户添加的某些功能。问题是,现在,老客户希望我也更新他的电子商务,添加我已经为另一个添加的新功能;当然,他不希望他的数据丢失,所以我必须将存储在旧数据库中的所有数据迁移到更新版本,采用不同的方案:例如,新方案有表、关系和列,而不是旧方案。
您建议我遵循的最佳解决方案是什么?sql 服务器中是否已经有适合该目的的功能?框架是否包含一些解决方案?提前感谢,对不起我的英语不好。如果我没有正确解释,我很乐意为您提供更多详细信息。
标准的 ASP.NET 或SQL Server开箱即用的解决方案。
一种解决方案是在 ASP.NET 框架之外更新数据库对象定义。有一些可靠的软件选项可以比较两个数据库的对象定义并生成SQL代码,以使旧数据库与新数据库同步。
这个软件会做什么?例如,如果您有以下表:
Table1 (id int primary key, col_one int)
您需要将表格更改为如下所示:
Table1 (id int primary key, col_one int, col_two nvarchar(50))
然后,数据库比较软件将执行或打印/显示如下所示的SQL代码:
Alter Table1 Add Column col_two
与往常一样,请确保在更改对象定义之前创建数据库备份!
您是先使用代码吗?如果是这样,请(至少暂时)禁用默认数据库迁移。更多可以在这里和这里找到。这将防止 ASP.NET 在发现任何架构更改时删除并重新创建数据库(我认为收到错误比丢失所有数据更好。
构建一个小的控制台应用程序(在测试数据库中尝试2000次之前),从旧数据库中提取数据,并使用正确的新ID将其推送到正确的位置,让数据存在于新的数据库结构中。
我建议您不要使用"id"Bigint 自动增量列,而是在第一个数据库中创建一个新的"GUID"列,以唯一数据库独立标识每个数据,并使用 GUID 而不是 ID 来指向数据本身。
希望这对你有帮助。
祝你好运。
PS:对不起我的英语