Скопируйте набор записей с одного sql-сервера на другой, используя c # и Entity Framework - PullRequest
2 голосов
/ 23 февраля 2011

Как я могу скопировать клиента из базы данных CRM в другую базу данных CRM?

Мое требование заключается в том, чтобы с (производственного) sql-сервера мне нужно было выбрать клиента и скопировать 100% связанных с ним данных на другой (тестовый) sql-сервер.

У меня уже есть модель сущностей, которую я использую для своего веб-приложения, я хочу использовать ее и читать всю информацию о клиентах как сущности.Но я не уверен, как мне использовать эти объекты и подключиться к другому sql-серверу (я планирую использовать пользовательский конфиг для знания адреса целевого sql-сервера).

Есть идеи?

1 Ответ

2 голосов
/ 23 февраля 2011

Вы можете определить модель объекта для своего клиента и всех связанных объектов, которые вы хотите перенести. Затем вы должны точно определить структуру БД на тестовом сервере, чтобы модель сущностей могла использоваться для обоих серверов.

Базовый сценарий может быть (псевдокод):

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();
  }
}

Проблема будет, если часть данных уже существует в БД. В таком случае вам сначала нужно будет загрузить клиента из тестовой БД и вручную объединить данные от производственного клиента в загруженный, чтобы уже существующие данные не вставлялись снова, а измененные / удаленные данные обновлялись / удалялись в тестовой базе данных.

...