2011-02-08 6 views
0

流暢なnhibernateを使用してデータセットにバインドされたwinformデータグリッドでの作業に使用するパターンを特定できません。Fluent Nhibernateを使用してバインドグリッドの変更をキャンセルする方法

私はユーザーと呼ばれる '流暢な' クラスを持っているし、次の手順を使用して、データグリッドを移入しています:。

this.grid.DataSource = session.CreateCriteria <ユーザー>()一覧<ユーザー> ();

これはうまく動作し、グリッドに自分のユーザーレコードが表示されます。トランザクションを使用するか、グリッド内で編集した後にセッションを単にフラッシュすることができ、すべてが正しく維持されます。しかし、グリッド内のUserオブジェクトに対する変更を取り消す方法を理解することはできません。 session.BeginTransaction内でフォームを開いても、session.Transaction.RollBack()を呼び出すと、変更は自分のデータベースに永続化されませんが、セッションオブジェクトにはまだ変更があり、セッションがフラッシュされたときに永続化されます。

私はすべてのWindowsフォームのベストプラクティスを見てきましたが、この問題の解決策を見つけることはできません。

答えて

0

まず、手動でセッションをフラッシュしないようにしてください。手動でセッションをフラッシュする必要がある場合は、設計に深刻な問題がある可能性があります。次に、トランザクションを使用します。第三に、あなたのセッションを長時間にわたって生きていないようにしてください。 Unit of Work patternに従ってください。

0

まず、フラッシングは試験目的のみであった。第二に、私は取引を利用しています。第3に、私は、データグリッドを含むフォームの期間だけライブセッションをしようとしています。私はUoWパターンのテスト実装を読んで行ったことがありますが、それは私の元の質問ではまだ役に立ちません。パターン/ベストプラクティスとは、データグリッドをバインドできるようにするためのものです。 NHibernateエンティティのリスト、グリッド内で行われた変更を取り消すことができます。

私がWinforms環境で流暢なnhibernateを使用することについて読んだ例は、個々のレコードを編集するためのポップアップ画面があります。ユーザーがグリッド内のエンティティを編集できるようにする必要があります。

関連する問題