Masalah dengan hanya menggunakan cakupan transaksi diuraikan di sini:NHibernate FlushMode Auto Not Flushing Sebelum Menemukan
Tampaknya nhibernate (v3.1 dengan dialek Oracle dan 11g db w/opd.net v2.112.1.2) memerlukan transaksinya sendiri untuk menghindari masalah pembilasan, tetapi saya belum bisa membuat ruang lingkup transaksi berfungsi dengan nhibernate transaksi.
Sepertinya saya tidak bisa membuatnya bekerja :( ini mungkin cacat di nhibernate atau odp.net, tidak yakin...
menemukan masalah yang sama di sini:NHibernate 3.0:TransactionScope dan Auto -Pembilasan
TETAP:menemukan solusi! dengan meletakkan "daftar=dinamis;" ke dalam string koneksi Oracle saya, masalahnya telah teratasi. Saya telah dapat menggunakan transaksi nhibernate (untuk memperbaiki masalah flush) dan ruang lingkup transaksi seperti:
ISessionFactory sessionFactory = CreateSessionFactory();
using (TransactionScope ts = new TransactionScope())
{
using (ISession session = sessionFactory.OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
//do stuff here
tx.Commit();
}
ts.Complete();
}
Saya memeriksa file log saya dan menemukan ini:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl - terdaftar dalam transaksi DTC:Serializable
sebelum SQL dijalankan pada koneksi. Saya akan menguji unit untuk mengonfirmasi eksekusi yang tepat. Saya tidak terlalu yakin apa yang dikatakan serializable kepada saya