最近、プロジェクトでNHibernateを使用しようとしています。以下のコードを参照してくださいNHibernateでエンティティステータスを管理できますか?
var _sessionFactory = cfg.BuildSessionFactory();
var _session = _sessionFactory.OpenSession();
var user = new User() {UserName = "carl", Gender = 1};
_session.Save(user);
_session.Delete(user);
_session.Flush();
_session.Close();
_sessionFactory.Dispose();
NHibernateはユーザーをdbに保存してからdbから削除します。私はコードが奇妙であることを知っていますが、NHibernateが実際にdbに2回アクセスする必要はないことを知りたがっています。エンティティフレームワークは異なる動作をしますが、メモリ内のユーザーオブジェクトの状態を切り替えます。フラッシュすると、データベースにアクセスして永続化します。もちろん、削除済みとしてマークされているユーザーは永続化されません。 dbアクセスは必要ありません。それは私が欲しいものです!
NHibernateがEFのようなEntity Statusを変更するインタフェースを持っていることを知っている人はいますか?
Userクラスのマッピングは何ですか? (想定されている)id-keyに対してデータベースのラウンドトリップが必要ですか?オブジェクトを削除することがわかっている場合、オブジェクトを永続化する理由は何ですか?なぜあなたはそれを避ける必要があるので、単一のデータベース呼び出し(削除)は非常に高価だと思いますか?ロールバックしたトランザクションを使用しようとしましたか? – sisve