Различные приложения C # обращаются к базе данных через Linq to Entities - PullRequest
3 голосов
/ 15 сентября 2011

У меня есть консольное приложение C #, которое выполняет некоторую обработку и затем записывает в базу данных. Я развернул его несколько раз на сервере с разными настройками конфигурации, чтобы сделать немного разные вещи. Однако все они должны записывать в одну и ту же базу данных (и, возможно, потребуется вставить те же данные в одну и ту же таблицу, если она еще не существует), используя Linq to Entities.

Если бы я использовал потоки, я мог бы заблокировать метод или хранимые процедуры, я мог бы поставить записи в очередь, чтобы избежать конфликтов, но есть ли способ сохранить их как отдельные приложения и не дать им обоим попытаться написать одну и ту же вещь в базу данных одновременно?

Я часто получаю исключение, когда возникает конфликт.

Edit:

Я не обязательно пытаюсь отладить, почему я получаю исключение, ища больше предложений «наилучшей практики», как это сделать, например. Следует ли это обрабатывать на уровне консольного приложения, на уровне L2E или на уровне базы данных.

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Почему нельзя запустить транзакцию с высоким уровнем изоляции, чтобы блокировка была активна на стороне сервера?

2 голосов
/ 15 сентября 2011

Вы можете использовать блокировки (пессимистическая модель параллелизма) или отметки времени (оптимистическая модель параллелизма) для решения проблем параллелизма.

Это очень широкая тема, поэтому я бы посоветовал вам начать поиск в Google для параллелизма в базе данных.

...