0

私はここで何かを見逃しているようです:

アプリケーション メソッドごとにセッションを使用し、遅延読み込みを使用するアプリケーションがあります。

セッション FlushMode.Commit を設定しましたが、トランザクションを開始してコミットすることはありませんが、NHibernate はダーティ オブジェクトを DB (SQLCe) に自動保存しているようです。

誰が私が間違っているのか教えてもらえますか?

私のコードの一部:

    public Repository(ISessionProvider sessionProvider)
    {
        _sessionProvider = sessionProvider;
        _session = _sessionProvider.OpenSession();
        _session.FlushMode = FlushMode.Commit;
    }

    public IList<T> GetAll<T>() where T : class
    {
        var criteria = _session.CreateCriteria<T>();
        var list = criteria.List<T>();
        return list;
    }
4

1 に答える 1

0

UI でダーティ オブジェクトを作成しているときに、同じセッションをフラッシュしている別のスレッドがあったようです。これは、アプリケーションの単なるバグだったと思います。

Lazy機能が必要なので、アプリケーションごとにセッションを使用しています。

于 2012-05-23T14:33:21.617 に答える