2010-12-28 9 views
1

NHibernateは過去にいくつかのWebアプリケーションで数回使用されていましたので、全く新しくはありません。仕事でNHibernate with Ajax、デタッチされたエンティティを更新する

、私は現在もアヤックスの束と一緒にNHibernateはを使用して新しいWebアプリケーションに取り組んでいます。

私は、アプリケーションのユーザーがWebフォームを介して特定のエンティティのプロパティを編集できるページをいくつか持っています。この場合ユーザーエクスペリエンスは重要なので、すべてがajaxです。ページロードで

、私は、ユーザーが作業しているエンティティのJSONオブジェクトを保持しているjavascriptの変数を持っています。私はJavaScriptSerializerを使ってページのソースにその旨を表示します。

ユーザーが「提出」をクリックした後、私は(JSONオブジェクトの)すべてのエンティティのプロパティを更新し、フォームを反復。

私は、データベース内のエンティティを更新するために、AJAXを介して、私が作成したWebMethod属性にJSONオブジェクトを送信します。私が持っているエンティティのオブジェクトがDataContextのではないので

今、私はDBに保存する必要が更新されたエンティティを受け取ったことを、私は、DBに保存することはできません。私は、NHibernateを使用してdbから同じIDでエンティティを照会し、更新されたプロパティの値をdbから取得したエンティティにコピーしてから、変更を保存する必要があります。

これはちょうど私が既に持っているが、私は意味、私を気にここに物事のカップルは、DBからオブジェクトを照会するために持っているようなものがある...働くための正しい方法のように私には感じていません更新された値をコピーして、dbに変更を保存します。

NHibernateがこの状況に対していくつかのより良いサポートを持っているのだろうか?

ありがとうございます、ギリブ。

+2

IMHOの場合、同時リクエストを処理する際には、オブジェクトをデータベースから安全な場所に置いておきたいと思うかもしれません。私は盲目的にデータベースを更新するのは良い考えだとは思わない。 –

+0

@ SergeyAkopov並行更新の処理は、そのマッピングに応じて、そのパターンで行うことができます。 (Versioned entities?=>オプティミスティックロック)並行性が念頭に置かれているものの、彼が物事をしようとする方法は依然として有効です。 –

+0

ところで、この質問は私にとって救済可能なように編集されています。 OPは、NHibernateの組み込みサポートを手作業で行う実用的なソリューションを提供していました。再開のためにフラグが立てられています。 –

答えて

2
session.SaveOrUpdate(modifiedObject) 
関連する問題