Может ли Linq-to-SQL сделать вставку или обновить по мере необходимости? - PullRequest
4 голосов
/ 12 октября 2010

У меня есть распределенное приложение, которое отправляет данные через WCF на сервер для хранения в базе данных (SQL Server 2008).

Обычно эти данные являются новыми.Поэтому я просто делаю InsertAllOnSubmit ().

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

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Обычно то, что я видел в качестве шаблона для сценария, когда вы пытаетесь выполнить любой вид вставки или обновления и возникает конфликт, например, объекты уже существуют, затем, когда вы обнаруживаете конфликт, вы запрашиваете новые данные и применяете их. ваши обновления к нему. Это позволяет вам гибко решать, какое изменение выигрывает, или предлагать пользователю каким-либо образом позволить им просмотреть новые данные и решить, должны ли их данные выиграть. Все зависит от контекста и бизнес-правил.

Это в основном относится к обновлениям, но, возможно, если вы подумаете о том, почему эти конфликты возникают для вставок, вы сможете адаптировать свою реализацию для использования методов обнаружения и разрешения параллелизма. http://msdn.microsoft.com/en-us/library/bb399373.aspx

2 голосов
/ 12 октября 2010

Изменение процедуры сохранения в базе данных для обработки вставки дубликатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...