2010-07-09 3 views
1

Я разрабатываю три приложения, которые имеют общую базу данных.
Я столкнулся с множеством различных проблем параллелизма и задавался вопросом, можно ли предотвратить выполнение любых других запросов при выполнении определенных запросов (другими словами, блокирование базы данных, чтобы не возникало проблем с параллелизмом).LINQ And Concurrency Question

Edit: Я использую LINQ к SQL

+0

Какую базу данных вы используете, и какие конкретные параллелизм вопросы, вы сталкиваясь? Большинство баз данных чрезвычайно хороши при обработке параллелизма при надлежащем использовании. – LukeH

+0

Какую базу данных вы используете? MySQL, PostGres, массив в памяти? В зависимости от того, что это такое, должна быть какая-то блокировка, но мы не можем ответить, если мы не знаем, с чем вы работаете. –

+0

Я использую SQL. Конкретная проблема, с которой я столкнулась, заключается в том, что два пользователя одновременно выполняют команду обновления. На некоторые строки может влиять один запрос, а другие - другой. – sooprise

ответ

2

Вы можете всегда use TransactionScope together with the appropriate locking hints запереть людей. Теперь вопрос в том, почему вы хотели бы это сделать ...

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

Использование замков ББ для этого должно быть в крайнем случае.

См:
http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/2d6fdb2e-e17e-4a4c-8da0-6968e60ef855
... и ...
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/1b20c00d-bb53-4057-a336-79d962eb463f