/ / Concurrency, Atomicty и изолация в Entity Framework - структура на обекти, паралелност, транзакции, ef-code-first, ниво изолация

Съвместимост, атомност и изолиране в Entity Framework - рамка на обект, конкуренция, транзакции, ef-code-first, изолация-ниво

Въз основа на някои периодично и едновременновходящи данни, изпълнявам операция, която или ще вмъкне нов ред в таблица, или ще актуализирам съществуващ ред в същата таблица. Независимо дали ще вмъкне или актуализира ред, зависи от състоянията на съществуващите редове. резултат от тази операция ще бъдат засегнати от предишни писти на тази операция, и ще повлияе на следващите писти.Трябва да осигуря атомизъм / изолация чрез транзакции, или заключвания, или нещо такова. "Ма пълна начинаещ с неща в базата данни също като цяло), че нямам представа в каква посока трябва да се насоча. TransactionScope, BeginTransaction, околните транзакции? Serializable или RepeatableRead? Запазване на промените и приемането на всичките промени? Трябва ли дори да направя нещо специално? Фактът, че може да се добави нов ред, ме кара да се тревожа особено за фантомните редове, макар че едва разбирам какво означава това. Всяко ръководство по темата би било високо оценено.

Отговори:

1 за отговор № 1

Този урок може да ви бъде полезен - http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application

цитат:

Песимистична конкурентност (заключване)

Ако приложението ви трябва да предотвратислучайна загуба на данни в сценарии за едновременност, един от начините да направите това е да използвате ключалки в базата данни. Това се нарича песимистична паралелност. Например, преди да прочетете a редове от база данни, изисквате заключване само за четене или за актуализация достъп. Ако блокирате ред за достъп за актуализиране, няма други потребители е позволено да заключи реда или само за четене, или за актуализация, защото те ще получат копие от данните, които са в процес на промяна. Ако заключите ред за достъп само за четене, други могат също да го заключат достъп само за четене, но не и за актуализация. Управлението на брави има недостатъци. Тя може да бъде сложна за програмиране. Това изисква значително ресурси за управление на база данни, и това може да доведе до проблеми с производителността тъй като броят на потребителите на приложение се увеличава (т.е. Поради тези причини, не всички за управление на базата данни системи поддържат песимистична паралелност. Рамката на предприятието предвижда няма вградена поддръжка за него и този урок не ви показва как да го направите да го приложат.

Оптимистична съпротива

Алтернативата на песимистичната паралелност еоптимистична конкурентност. Оптимистичен паралелизъм означава да се позволяват конфликти на едновременност, и след това да реагират по подходящ начин, ако го направят. Например, Джон управлява Редактирайте страницата на отделите, променя размера на бюджета за английския език отдел от $ 350,000.00 до $ 100,000.00. (Джон администрира a конкурентни отдели и иска да освободи пари за собствените си отдел.) *

В урока има примери за кодове за двата модела.