エンティティを MySQL データベースから新しい SQLite データベース (エクスポート) にコピーしたいと考えています。私は以下のコードを持っています:
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 をメッセージとともにスローします。
プロキシを 2 つの開いているセッションに不正に関連付けようとしました
両方のセッションが開かれていることは理解していますが、きちんとした解決策が見つかりませんでした。私が見つけた唯一のものは、各 foo のディープ クローン作成に関するものでしたが、これは面倒でした (foo には bar オブジェクトのプロパティがあり、これには boo オブジェクトの別のプロパティなどがあります)。
NHibernate を使用してこのような一括コピーを実行するにはどうすればよいですか? ソース データベースと宛先データベースのスキーマは同じではないことに注意してください。それを達成するために、さまざまなマッピングを使用しました。