IQToolkit не имеет возможности запросить блокировку строки.Однако, если вы используете транзакцию, вы должны получить блокировки чтения для чтения, происходящего внутри транзакции, в зависимости от уровня изоляции транзакции.
LINQ to SQL имеет особую поддержку оптимистичного параллелизма, что означает, что ожидаемое использование API заключается в том, что вы не читаете данные в транзакции, но когда вы отправляете изменения, все они входят в транзакцию (чтопроисходит под прикрытием от вашего имени.) Оптимистическая часть происходит, когда обновления отправляются.Если строки изменились с тех пор, как вы прочитали данные, обновления для этих строк завершатся неудачно.Это оставляет вам возможность либо прекратить все это, автоматически начать заново с новыми операциями чтения и т. Д., Либо использовать информацию в исключении конфликта изменений, чтобы выбрать, как объединить изменения с изменениями баз данных, а затем повторно отправить их.Подход «выбор и выбор» сложен, и если вы «не знаете, что делаете», вам, вероятно, следует просто использовать подход «повторить все с нуля».
IQToolkit не имеет возможности, позволяющей вамиспользуйте подход «выбрать и выбрать и повторно».Таким образом, лучше всего попытаться выполнить оптимистичный параллелизм - просто повторить попытку в случае сбоя обновления.Если вы предпочитаете использовать пессимистический параллелизм и простое помещение запросов на чтение в транзакцию не дает нужной вам блокировки, тогда вы можете свободно добавить эту возможность в IQToolkit, так как он является исходным набором и примерами для создания поставщиков запросов IQueryable.