2009-07-22 9 views
14

私は、あらゆる種類のドキュメント、勉強できるオープンソースのnhibernate winformアプリケーション、またはwinform/nhibernateフレームワークを探しています。 NhibernateのcontribとNhAddinsに少し見ましたが、それはすべてです。 ウェブはたくさんありますが、winformについてはほとんどありません。 なぜですか?nhibernate winformアプリケーションの例

答えて

1

Sebasian Talamoni available hereによって書かれたnHibernate + Windowsフォームのミキシングについて議論が進行中です。ディスカッション+コードが含まれています。

+0

リンクをありがとう、私はすでにこのサンプルアプリケーションを試してみました。 ジップに含まれているドキュメントはinterrestingです。 私はこのようないくつかの他の記事を探したいと思います。 著者が続編を出版しているかどうか知っていますか? –

+0

私は頭の上から何も知らない。その記事には便利で興味深い情報があります。しかし、Google検索では他の多くの情報が返されます。 –

+0

私は直接利用できるものを見つけるのが好きです。nHibernateのために見つけることができるブログプラットフォームのトンやトンのようです。そしてWinform :)。 –

7

winformsの例があまりにも少ない理由は、imhoです。スマートクライアントでは、スマートクライアントでは管理がはるかに複雑です。

ウェブの世界では、httpセッションの開始時にISessionを開き、httpセッションが終了したときにセッションを閉じます。

スマートクライアントにhttpセッションの概念を直接変換することはできません。複数の画面が同時に開いている、最小化されている、他の画面が常に開いて閉じている、変更を保存せずに閉じてしまうものなどがあります。アプリケーション私はここから離れて滞在する

あたり

1セッション:

は、私は三つの基本的な戦略があると思います。シングルトンセッションによって古いエンティティ例外のような例外が発生した場合、そのセッションは現在使用できなくなります。あなたのアプリは基本的にはドゥードゥーです。画面あたり

セッション

これは少し優れている、あなたは、単一のセッションが吹くまでならば、あなたのアプリがパンを下って行くことは避けてください。ただし、一部の画面では、同じunit of workで共同作業する場合があります。同じセッションを共有する必要があります。または、永続エンティティがそれらをロードしたセッションと親和性を持っているため、画面間でエンティティを共有しようとすると、issuesが表示されます。

永続的な会話

私は、これが進むべき道だと思います。あなたは、あなたの作業単位の範囲を保持するサービスを定義します。このサービスのメソッドを呼び出すたびに、正しいISessionが目に見えない形でスワップされます。あなたがあなたのサービスを終えたら、あなたはそのサービスの別の方法を呼び出し、そのセッションは処分されます。

サービスのインスタンスを画面間で共有することができるため、セッションを共有できます。複数のセッションを同時に開くことができます。これらのすべてはAspect Oriented Programming技術によって行われます。属性を使ってサービスにタグを付ける以外のアクションは必要ありません。

これは非常に複雑なので、ファビオの記事はherehereおよびhereとなっています。

unoffical nh addinsにこのパターンの実装があります。これはウィンザーではおそらく他のIoCコンテナに変換することができます。

3

Fabio Mauloは、WinFormsアプリケーションでのセッション管理に関して素敵なpostを持っています。また、下部にリンクされているサンプルアプリケーションのダウンロードもあります。

8

This Oren Einiによる記事は、私が見たデスクトップのWindowsアプリケーションの実装方法の最良の例です。詳細なデザインパターンとベストプラクティスは、WinFormsまたはWPF \ Silverlightアプリケーションに適用する必要があります。

関連する問題