我想將我的實體從MySQL數據庫複製到全新的SQLite數據庫(導出)。 我有下面的代碼:如何在NHibernate中的會話之間複製對象
IEnumerable<Foo> fooList;
using (var sf = CreateMySqlSessionFactory("user", "password"))
using (var source = sf.OpenSession())
using (var sf2 = Class1.CreateSqliteSessionFactory(outputPath))
using (var dest = sf2.OpenSession())
{
fooList = source.Query<Foo>();
foreach (var foo in fooList)
{
dest.SaveOrUpdate(foo);
}
dest.Flush();
}
兩個會話工廠都沒有問題產生。不幸的是SaveOrUpdate拋出LazyInitializationException中與消息:
非法企圖的代理有兩個打開的會話
據我所知,這兩個會議是開放聯繫在一起,但我找不到任何巧妙的解決辦法。 我唯一能找到的就是深入克隆每個foo,這太麻煩了(foo具有bar對象的屬性,它具有boo對象的另一個屬性等)。
如何使用NHibernate執行這樣的批量複製? 請注意,源數據庫和目標數據庫的模式不一樣。我用不同的映射來實現這一點。
你有沒有解決這個問題? 我正在做同樣的事情。我注意到在執行保存操作之前,我必須執行'source.Clear()'。 – Markus 2015-03-27 07:23:48