Entity Framework 4 Объем транзакции - PullRequest
       18

Entity Framework 4 Объем транзакции

1 голос
/ 23 сентября 2011

Я использую 2 INSERTS внутри функции. Первый - это не-сущностный фреймворк INSERT (AD0.NET). Вторым является EntityContext.SaveChanges ()

Могу ли я не вкладывать оба этих элемента в область действия?

Ответы [ 2 ]

0 голосов
/ 05 октября 2012

Как говорит Эранга, это вполне осуществимо, хотя и несколько грязно.

См. эту ссылку для спокойствия на TransactionScope

Также рассмотрите возможность установки уровня изоляции для объема транзакции, например,

TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.Serializable;

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
// Do something here
}

Две разные вставки базы данных (два разных одновременных соединения) вызовут эскалацию транзакции в распределенную транзакцию. Используйте DTCPIng.exe , чтобы проверить, будет ли он работать между разными компьютерами.

P.S. Различные базы данных имеют свои собственные уровни изоляции по умолчанию, поэтому рекомендуется указывать это в своем коде, например SQL Server Express по умолчанию использует Serializable, SQL Server (полная версия) - нет!

0 голосов
/ 23 сентября 2011

Да, вы можете

using (TransactionScope scope = new TransactionScope())
{

   InsertRecord();

   context.SaveChanges();

   scope.Complete();
}
...