我必须从现有数据库中获取数据并将其移动到具有新设计的新数据库中。因此,新数据库具有其他列和表,而不是旧数据库。
所以基本上我需要读取旧数据库中的表并将这些数据放入新结构中,一些数据不再被使用,其他数据将被放置在其他列或表等中。
我的计划是只使用
等基本查询读取旧数据库中的数据Select * from mytable
并使用Entity Framework映射新的数据库结构。然后我基本上可以这样做:
while (result.Read())
{
context.Customer.Add(new Customer
{
Description = (string) result["CustomerDescription"],
Address = (string) result["CuAdress"],
//and go on like this for all properties
});
}
context.saveChanges();
我觉得这样做更方便,以避免编写大量的INSERT语句等等,但这样做有什么问题吗?由于某些我不理解的原因,这被认为是不好的。表现不佳或任何其他陷阱?如果有人对此有任何意见,我将不胜感激,所以我不会从这开始,因为某种原因,这是一个很大的禁忌。
答案 0 :(得分:1)
你可能也尝试过的东西,只是为新的目标数据库编写一个新的DBContext类。
然后简单地用一个静态方法编写一个控制台应用程序,该方法将实体和属性从一个上下文复制到另一个上下文。
这将确保您的参照完整性保持不变,并且在编写SQL代码方面为您节省了大量麻烦,因为EF在这方面为您做了所有繁重的工作。
如果dbContext包含大量实体dbsets,我建议你使用某种自动化器。
但是,这取决于您尝试移动的数据量。如果我们谈论的是terrabytes,我宁愿建议你不要采用这种方法。