使用c#和实体框架将一组记录从一个sql-server复制到另一个sql-server

时间:2011-02-23 06:16:54

标签: c# sql-server-2008 entity-framework-4

如何将客户从CRM数据库复制到另一个CRM数据库?

我的要求是,从(生产)sql-server,我需要能够选择一个客户并将其100%的相关数据复制到另一个(测试)sql-server。

我已经拥有了一个实体模型,我将其用于我的Web应用程序,我希望使用相同的实体模型并将所有客户信息作为实体读取。但我不确定,我应该如何使用这些实体并连接到另一个sql-server(我计划使用自定义配置来了解目标sql-server的地址)。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以为您的客户以及您要转移的所有相关实体定义实体模型。接下来,您必须在测试服务器上定义完全相同的DB结构,以便实体模型可用于两个服务器。

基本场景可以是(伪代码):

Customer customer = null;
using (var context = new MyContext("ProductionConnectionString"))
{
  // You must use Include to load all related data
  customer = context.Customers.Include("...").Where(...).Single();
}

using (var context= new MyContext("TestConnectionString"))
{
  context.Customers.AddObject(customer); // Inserts everything
  using (var scope = new TransactionScope())
  {
    context.SaveChanges();
    scope.Complete();
  }
}

问题是,如果数据库中已存在部分数据。在这种情况下,您必须首先从测试数据库加载客户并手动将生产客户的数据合并到已加载的客户中,以便不再插入已存在的数据,并在测试数据库中更新/删除已修改/删除的数据。