|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
Здраствуйте, не могу никак найти нужную информацию Допустим что я измению в контексте EF запись в таблице через UpdateObject(). На эту запись накладывается блокировка в таблице? Навроде UPDATE WITH (ROWLOCK). Т.е сможет ли прочитать данную запись(до SaveChanges в первом) другой контекст EF, открытый из другого места или будет ждать коммита? Мне что-то подсказывает что произойдет считывание навроде with (nolock) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 17:07 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
OracleLover, Что-то мне подсказывает, что вам надо прочитать про блокировки и транзакции в SQL-сервере. После чего выяснить вопрос, как EF управляет соединениями и транзакциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 17:58 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
SolYUtorOracleLover, После чего выяснить вопрос, как EF управляет соединениями и транзакциями. КЭП! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 18:39 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
OracleLover, Документация как бы намекает: авторUPDLOCK Указывает, что блокировки обновления применяются и удерживаются до завершения транзакции. И далее по тексту . Простите, если чо. Ленив стал, неохота документацию на форум постить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 21:58 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
OracleLover, А чё, если на ЕФ пишете, ещё и про такую фигню надо задумываться? Забейте или на еф, или на профессию и займитесь делом. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 23:36 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
SolYUtorOracleLover, Документация как бы намекает: авторUPDLOCK Указывает, что блокировки обновления применяются и удерживаются до завершения транзакции. И далее по тексту . Простите, если чо. Ленив стал, неохота документацию на форум постить. Когда Entity Framework создает новую транзакцию для операции SaveChanges, изменения объектов в контексте объекта не принимаются до завершения этой транзакции. Это обеспечивает согласованность состояния контекста объекта и источника данных. Это понятно. Но допустим что первый контекст взял запись с индексом 1 и что-то долго возится с ней прежде чем удалить ее наконец сделать SaveChanges(). Во время этой возни другой контекст может хапнуть эту же запись? Я очень внимательно прочитал твои ссылки(первая вообще не в тему) - там про эту ситуацию не сказано ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 00:07 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
OracleLover, Я честно не знаю, никогда не задавался этим вопросом, но может ConcurrencyMode = Fixed Вам чем то поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 00:38 |
|
Entity Framework и блокировка на уровне записи
|
|||
---|---|---|---|
#18+
OracleLover, 1. Если вы явно не управляете транзакциями то транзакция будет создаваться на каждый statement, и следовательно, после его завершения все блокировки будут сняты. 2. Если открываете транзакцию явно - то блокировки будут держаться до фиксации или отката. 3. Что касается конкурентного доступа к разным записям - это определяется уровнем изоляции транзакций, и hint'ами на блокировки. Если не хотите, чтобы второй коннект смотрел запись, пока вы ее мусолите - ставьте Serializable. Подробнее об изоляции транзакций, и последствиях применении каждого уровня написано в любом букваре по базам данных. EF не привносит в эти механизмы ничего нового, просто удобное API для работы с БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 10:31 |
|
|
start [/forum/topic.php?fid=17&fpage=35&tid=1350374]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 130ms |
0 / 0 |