Транзакции в Entity Framework против NHibernate - PullRequest
0 голосов
/ 08 февраля 2012

Пользуясь NHibernate довольно долго, я сейчас изучаю Entity Framework.В NHibernate для каждого экземпляра ISession была создана отдельная транзакция базы данных с использованием ISession.BeginTransaction.В Entity Framework, как бы я достиг того же эффекта одной транзакции на контекст?

1 Ответ

0 голосов
/ 08 февраля 2012

ISession не строго соответствует транзакции базы данных в nHibernate, однако в нее встроена неявная транзакция, вы можете увидеть больше здесь: NHProf о неявных транзакциях .

В Entity Framework транзакция запускается неявно, когда вы вызываете SaveChanges, вы можете узнать больше об этом в этой статье на msdn

Чтобы иметь явную транзакцию в Entity Framework, вы используете TransactionScope или BeginTransaction для EntityConnection.

Самый простой способ - использовать TransactionScope следующим образом:

using (TransactionScope tran = new TransactionScope()){
    context.SaveChanges();
    //Do more work with this or another context
    context.SaveChanges();
    tran.Complete();
    //Or alternatively don't call Complete and because of the using block Dispose on tran will be 
    //called causing an Rollback
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...