如何使用Entity Framework复制整个数据库?

时间:2016-09-05 07:34:55

标签: c# sql-server database entity-framework asp.net-mvc-4

此任务的目的是将包含所有实体的默认值的数据库复制到新创建的数据库中。当程序第一次创建数据库时,将调用此任务,因此新创建的数据库将使用我的默认值数据库中的值填充。

只复制和粘贴数据库的问题是我的默认值数据库有凌乱的主键。每个实体的主键值都不符合规定。

我想要的是为程序创建新的数据库,从另一个数据库复制值,但每个实体都有连续的主键(1,2,3,4,5没有跳转)。

要求是结构,默认值数据库的引用必须保持稳定。例如,当复制实体A从5重置为id = 1时,所有引用也会更改为1。

我怎样才能做到这一点?有没有快速的方法来做而不是手动复制每个实体?因为它是一个非常大的数据库。

注意:默认数据库上下文与新创建的数据库上下文相同。

1 个答案:

答案 0 :(得分:0)

几个月前我自己完成了这样的任务。没有自动方式。你必须手动完成。我想分享我用过的步骤。

第1步:

我已经通过初始化(Migrateddelete data)旧的db创建了一个新的数据库(即PK Reseed)。之后我得到了旧数据库的精确副本(即模式) only.No data)

以下是一个表的脚本

Use Migrated;
GO

delete from IpOccupantNotes
GO

--To Reseed the PK

DBCC CHECKIDENT ('[IpOccupantNotes]', RESEED, 0) 
GO

第2步:

之后我插入旧数据库中的相关数据(我的情况为Legacy),如下所示。

INSERT INTO [Migrated].[dbo].[IpOccupantNotes] (Name, ZipCode)
select  a.Name,a.ZipCode from [Legacy].[dbo].[IpOccupantNotes] as a;

GO

注意:如果您有任何疑问,请随时提出。我会帮助您:)