Transaction.Commit сохраняет изменения, сделанные до BeginTransaction - PullRequest
0 голосов
/ 30 января 2012

Каков наилучший способ избежать внесения нежелательных изменений?

var a = session.Load<A>(id);
a.Value = ParseExpressions(a.Value);

using(var tx = session.BeginTransaction())
{
  // Do some work here
  tx.Commit();
}

Объект A содержит выражения, которые необходимо оценить перед выполнением работы, но когда транзакция зафиксирована a.Value сохраняется в базе данных.

Я хочу только те изменения, которые происходят после session.BeginTransaction ().

Я пытался вызвать session.Clear()но это приводит к тому, что сущности с идентификатором Guid сохраняются, а не обновляются.

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Вы можете использовать систему событий, чтобы пропустить сохранение определенных объектов, но у вас возникают проблемы.

Вы также можете Evict() определенные объекты из сеанса.

ПравилоЭмпирически: если вы не хотите сохранять изменения в сущности, не изменяйте сущность .Все ваши изменения должны быть готовы к вызову commit.

0 голосов
/ 30 января 2012

Не уверен на 100%, что я правильно помню, но вы должны иметь возможность установить session.FlushMode, чтобы никогда и явно сохранять изменения, которые вы хотите сохранить.

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