나는 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
DEBUG - 무시 영속 인스턴스
DEBUG - 이미 세션과 연관된 객체 : [DotNetMigrations .Core.Domain.SchemaChange # 129]
UPDATE
좋고, 그렇게 단순 (와 같은 어리석은 질문), 나는 그것을 스스로 발견했다 :
session.SaveOrUpdate(schemaChange);
schemaChange.ScriptName = "New one";
session.Flush();
의미가있다. nHibernate는 내가 사용 해본 어떤 orm 도구보다 훨씬 우수합니다.
내가 알아낼 수없는 이유는 SaveOrUpdate 메서드가있는 이유입니다 ... 업데이트하는 경우 개체가 세션과 자동으로 이미 연결되어 있지 않습니까? (첫 번째 방법으로 데이터베이스에서 벗어 났기 때문에 과정을 거치지 않고 Flex RIA와 같이 보내지 않으면 다시 돌아 왔습니다)
그래서 개체가 이미 연결되어 있는지 SaveOrUpdate() 또는 그냥 플러시()합니까?
질문에 자동 응답하여 여기 배지를 획득 할 수 있습니다 ... ^^ – Romain
그래, 내 인생을 가치있게 만들었을거야 ;-) –