这是我第一次在这个很棒的网站上提问,所以如果我违反了一些规则,请与我保持礼貌。
所以,这是我的问题,我在Asp.NET,MVC4中为某个客户开发了一个电子商务软件。然后,我为另一个客户开发了另一个电子商务,显然从最后一个开始。现在我有两个类似的电子商务项目,不同之处仅在于我必须为新客户添加的一些功能。问题是,现在,老客户也希望我更新他的电子商务,添加我已经为另一个添加的新功能;当然他不希望他的数据丢失,所以我必须将存储在旧数据库中的所有数据迁移到更新版本,使用不同的方案:例如,新方案有表,关系和列,不在旧的。
您建议我遵循哪个最佳解决方案? sql server中是否有函数,适用于此目的?框架是否包含一些解决方案? 提前谢谢,抱歉我的英语不好。如果我没有正确解释,我很乐意为您提供更多细节。
答案 0 :(得分:0)
我不知道标准的ASP.NET或SQL Server开箱即用的解决方案。
一种解决方案是更新ASP.NET框架之外的数据库对象定义。有一些solid software options将比较两个数据库的对象定义,并生成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
与往常一样,请务必在更改对象定义之前创建数据库备份!
您是否先使用代码?如果是这样,(至少暂时)禁用默认数据库迁移。可以找到更多here和here。如果发现任何架构更改,这将阻止ASP.NET删除并重新创建数据库(我认为接收错误比丢失所有数据更好。)
答案 1 :(得分:-1)
你必须构建一个小的控制台应用程序(在测试数据库中2000次之前尝试),从旧数据库中提取数据并使用正确的新ID将其推送到正确的位置以使数据存在于新数据库中结构
我建议你不要使用“id”bigint自动增量列,而是在第一个数据库中创建一个新的“guid”列,以便对每个数据进行独特的数据库独立识别,并使用guids而不是标识。
希望这会对你有所帮助。
祝你好运。ps:对不起我的英语