LINQ to SQL, сочетающий чтение незафиксированных и чтение зафиксированных - PullRequest
1 голос
/ 08 сентября 2011

Я хотел бы использовать LINQ to SQL в качестве слоя данных для приложения. Оптимистичный параллелизм кажется, что он будет работать, но я хотел бы быть чрезмерно оптимистичным и не беспокоиться о какой-либо блокировке (например, ReadUncommitted aka WITH (NOLOCK)), пока не доберусь до SubmitChanges(), и в этот момент я думаю, что все в порядке используйте ReadCommitted.

Это звучит как безумие? Лучше использовать два непересекающихся объекта TransactionScope (один для чтения с ReadUncommitted, затем второй для отправки изменений с ReadCommitted), или есть какой-нибудь более приятный способ повысить уровень изоляции непосредственно перед отправкой изменений?

1 Ответ

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

ReadCommitted или ReadUncommitted не имеет значения для SubmitChanges(), потому что это запись, а не чтение. Независимо от того, какой уровень изоляции, обновление всегда получает блокировку и учитывает существующие блокировки. Должно быть, это главное назначение замков.

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

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