Я новичок в nHibernate, так что, вероятно, это будет довольно глупый вопрос. Но в любом случае сохранение объекта прекрасное, обновление его не работает.Обновление объекта в nHibernate
Это то, что я делаю:
using (ISession session = _sessionFactory.OpenSession())
{
session.SaveOrUpdate(schemaChange);
schemaChange.ScriptName = "New one";
session.SaveOrUpdate(schemaChange);
}
Первый SaveOrUpdate вставляет schemaChange в базе данных. Второй должен обновить один и тот же объект, но nHibernate этого не делает.
В выходных я получаю:
DEBUG - постоянный экземпляр: DotNetMigrations.Core.Domain.SchemaChange
ОТЛАДКИ - игнорируя стойкий экземпляр
ОТЛАДКИ - объект уже связан с сессией: [DotNetMigrations .Core.Domain.SchemaChange # 129]
UPDATE
Ну, как это было так просто (и глупый вопрос), я нашел это сам:
session.SaveOrUpdate(schemaChange);
schemaChange.ScriptName = "New one";
session.Flush();
Делает вид. nHibernate действительно превосходит любой инструмент orm, с которым я работал.
Что я могу не понять, почему существует метод SaveOrUpdate ... Если вы обновляете, то это не объект, автоматически связанный с сеансом? (потому что вы вытащили его из db первым способом. Если вы не отправили его, например, Flex RIA, и он вернулся)
Итак, откуда вы знаете, если объект уже связан, либо с сделать SaveOrUpdate() или просто Flush()?
Возможно, вы ответили на свой вопрос и получили значок здесь ... ^^ – Romain
Да, это сделало бы мою жизнь достойной ;-) –