이것은 this question의 상세한 설명이다.NHibernate : 데이타베이스에있는 FK에 의해서만 관련이있는 커밋되지 않은 데이터로리스트를 채움
두 테이블이 있다고 가정하면 Foo
및 Bar
입니다.
Bar
의 FK는 Foo
입니다.
응용 프로그램에서 테이블은 클래스로 표시되며 Foo
의 목록은 Bar
입니다. Bar
에는 데이터베이스에 FK가있는 Foo
의 ID에 대한 속성이 있습니다. IsolationLevel.ReadUncommitted
와 Session
및 Transaction
의 맥락에서
Bar
의 인스턴스의
Foo_id
속성에 생성 된 ID를 지정하고, 데이터베이스에
Foo
의 인스턴스를 추가합니다.
이제 Transaction.Commit()
를 호출하기 전에, 그것은 NHibernate에 데이터베이스에서 Bar
의 목록 Foo
을 읽게 수 있습니까? 즉, 커밋되지 않은 데이터를 읽습니다.
나는 created a VS2012 project which demonstrates this입니다. 여기에는 필요한 데이터베이스를 구축하기위한 SSDT 프로젝트가 포함되어 있으며 내가 묻는 것을 보여주는 테스트가 있습니다.
감사합니다.
Flush(), Clear() 및 Evict(). – hlintrup
Clear() 또는 Evict (foo) 후에 Foo를 다시 읽을 때 모음에 Bar 인스턴스가 포함됩니다. Flush() 자체는 효과가 없습니다. Clear()가 원하는 결과를 얻는 이유는 무엇입니까? 의사는 모든 인스턴스를 제거하고 보류중인 변경 사항을 취소한다고 말합니다. – hlintrup
@hlintrup 그런 일이 일어나기 위해서는 NHibernate가 데이터베이스에 변경을 쓰는 이유를 발견했음을 의미합니다. Flush()는 수동 방법 일 뿐이므로 다른 시간에도 발생할 수 있습니다. –