У нас есть внутреннее программное обеспечение на основе базы данных SQL-сервера с главной таблицей и несколькими связанными таблицами. Характер данных, которые мы храним, довольно сложно описать, но предположим, что у нас есть таблица клиентов с некоторыми объединенными таблицами: заказы, отгрузки, телефонные журналы, жалобы и т. Д.Таблицы SQL-мастер-SQL - лучше UPDATE или DELETE + INSERT?
Нам необходимо синхронизировать это программное обеспечение с внешним который имеет собственную БД (с той же структурой) и создает XML-файл с обновленной информацией о наших «клиентах» (по одному файлу на одного клиента). Обновления могут быть в главной таблице и/или от 0 до n соединенные таблицы.
Чтобы импортировать эти файлы, один из вариантов заключается в том, чтобы запрашивать все связанные таблицы и сравнивать их с XML-файлом, возможно добавляя-обновляя-удаляя строки.
Для этого потребуется много кодирования.
Другой вариант - полностью удалить все данные для данного клиента (по крайней мере, из объединенных таблиц) и вставить их снова.
Это было бы не так эффективно.
Обратите внимание, что в основной таблице имеется 13 полей, а также около 6 таблиц с 3 по 15 полей.
В этом приложении мы в основном используем LINQ.
Как вы продолжите?
PS: Я заметил несколько ответов на эту тему здесь, в StackOverflow, но почти все относятся к одиночным таблицам (одиночные строки).
Спасибо, Джин, за ваш ответ. Данные никогда не экспортируются из нашего приложения. Наше приложение в основном доступно только для чтения, данные периодически обновляются сторонним приложением (через xml). И, конечно, каждый XML-файл содержит все данные об одном клиенте (оба данных, которые у меня уже есть в моем db и данные, которые мне нужно добавить/отредактировать/удалить). Итак, каждый раз, когда приходит файл, я не могу сказать, что мне нужно обновить, если я не сравниваю каждую строку. Мне непонятно, как я могу использовать флаги для обработки всего этого. – Disti
Флаги полезны только для экспорта (стыдно, что другая система не может сказать вам, что обновляется, вставлена, удалена) и для логического удаления. Только для импорта вы можете создать «внешний идентификатор», и если в таблице большое значение также используется столбец хэша, чтобы узнать, есть ли вообще обновление. Вы даже можете хэш-код файла XML, чтобы проверить, есть ли какие-либо изменения в файле по сравнению с предыдущей версией – jean