WebアプリケーションのCRUDの検索のためのDapperとNHibernate

asp.net-mvc-3 dapper nhibernate

質問

私は検索のための "Dapper"とCRUDの操作のための "NHibernate"を使うつもりです。だから、このアプローチに従うことは良い設計でしょうか。最近私が直面した問題の1つは、CRUD画面です。

注文の編集フォームがあるとします。私はDapperからエンティティ(順序)を取得しています。更新中に、これらのオブジェクトをNHibernateセッションに接続してCRUD操作を実行する必要があります。それは直接必要なものではない、私はobject.delete()を意味する。

誰もこのデザインに関する提案を提供でき、それをより良くする可能性があります。 asp.net mvc 3を使用して開発されたWebアプリケーションです。


返信に関する質問:

  1. アクションのセッションフィルタは、現在の操作に使用しているものを意味します。もしそうなら、GET操作の場合、[NHSession]ではなく[DapperSession]でなければなりませんか?

    [NHSession] << -------- [DapperSession]アクションの結果を得る

    • DapperSession.Get.Entity(1000)
    • 戻るビュー
  2. 私はまだあなたが投稿したPRGパターンを理解しようとしています、私は疑問があれば投稿します。

  3. "編集"操作のために起こっていることはすべて、NHibernateを使ってオブジェクトを取得するのが得策です。これは、すべてのこのプロセスを少しでもオーバーヘッドのコストで行うことができます。

受け入れられた回答

一見すると、これはGETのためのDapper(または他の他のマイクロORM)とコントローラーのPOSTアクションメソッドのためのNHibernateを論理的に使うように思えます。擬似コード参照): -

[DapperSession]
GET ACTION RESULT
  - DapperSession.Get.Entity(1000)
  - Return view

postメソッドの場合

[NHSession, DapperSession]
POST ACTION RESULT
  If Model.State is valid
    - entity = NHSession.Get.Entity(1000)
    - update entity
    - redirect to ...
  end if

 - DapperSession.Get.Entity(1000)
 - return view

ご覧のとおり、これはあまりエレガントではありません。POSTアクションの結果とは異なるアクションフィルタが必要な場合があります。これを整理するためにPost Redirect Get(PRG)パターンを利用することができます.GETコントローラはDapperを使用し、POSTコントローラはNHSessionsにしかアクセスできません。

このパターンを設定する方法の詳細については、この受け入れられた答えを参照してください。

これで、GETとPOSTのアクション結果は次のようになります。

[DapperSession, ImportModelStateFromTempData]
GET ACTION RESULT
  - DapperSession.Get.Entity(1000)
  - Return view

postメソッドの場合

[NHSession, ExportModelStateToTempData]
POST ACTION RESULT
  If Model.State is valid
    - entity = NHSession.Get.Entity(1000)
    - update entity
    - redirect to ...
  end if

 - return redirect to GET

しかし、私が実際にやっていることは、別のアクションフィルタ属性を1つのアクションフィルタ属性に置き換えることです。しかし(これは大きなものですが、私の意見では)PRGパターンを利用する利点があります!正直言って、これはおそらく私たちの質問に直接答えるものではありませんが、それは従うべき良い方法です。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow