2014-01-03 2 views
0

Мне нужно ежедневно перемещать некоторые данные из базы данных Sql Server на одном сервере в другую базу данных сервера Sql на другом сервере. У меня есть полный доступ на чтение на исходном сервере. База данных назначения извлекается для обработки некоторых преобразований для системы учета. Я должен преобразовать данные и использовать хранимые процедуры для целевой базы данных. После того, как мои данные загружены в целевую базу данных, происходит смена трансформации и изменение моих данных.Перемещение и сравнение данных из разных баз данных с использованием структуры сущностей

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

Мы думали об использовании Entity Framework для чтения и кеширования, но я беспокоюсь, что это потребует от нас создания двух разных моделей и их сравнения до их сохранения. Это было бы больно, но это позволило бы нам преобразовать/изменить данные как объекты и значительно упростило бы нашу бизнес-логику.

Рекомендуется ли иметь отдельные процессы для этой части или продолжить использование двух разных моделей данных?

Для упрощения:

  1. Load/сравнить данные между базами данными
  2. Обновления базы данных температуры с новыми данными
  3. Установить флаг
  4. нагрузок всех объектов временной базы данных с флагом значения ИСТИНЫ, используя рамку сущности
  5. Преобразование/изменение темп-объектов в бизнес-логике
  6. Отправлять по месту назначения с использованием хранимых процедур

Или

  1. Загрузка данных из базы данных происхождения с использованием фреймворка Entity
  2. Загрузка данных из временной базы данных с помощью рамки сущности
  3. Сравнить
  4. Обновить объекты временные новые данные
  5. Transform/изменить временный объект на бизнес-логику
  6. Отправить по вызову используя сто красные процедуры

Если я выберу первый вариант, стоит ли потратить время на использование рамки сущности? Разве я об этом думаю, и есть лучший способ обойти это полностью?

ответ

1

1: создать 2 модели контекста базы данных. скажем, datacontext1 и datacontext2.

2: Создайте dto (объект передачи данных), который будет очень похож на таблицы, которые передаются из datacontext1 в datacontext2.

3: Используйте automapper для сопоставления свойств datacontext1 с созданным dto, а также с отображением datacontext2 в dto.

4: запускает использовать слой службы с функциями "общественный DTO readdata (table1)" и "общественный недействительный сейв (DTO)"

5: читать данные из dbcontext1 и сохранить его в dbcontext2

таким образом, если что-либо изменится в database1 или database2, было бы очень легко справиться с этим изменением.

+0

Я изучаю это. В каком проекте вы бы установили свойства сопоставления? –

+0

Проект, который получает datacontext1 и datacontext2 и обрабатывает их, - это тот, который вы хотели бы настроить сопоставления в –

+0

Что делать, если я завернул datacontexts в репозитории? Я решил, что это упростит его для будущего использования. Мне также нужно иметь возможность обрабатывать бизнес-логику, кроме копии. –

Смежные вопросы