0

特定の条件が発生した場合、フィールドを MySQL 関数の値に設定したいと考えています NOW()。状態は、更新の直前に判別可能です (たとえばIInterceptor.OnSave、 またはSession.SaveOrUpdate(myObj))。このアクションは、他のフィールドも更新される NHibernate の Update ステートメントで発生する必要があります。

結果の SQL は次のようになります。

UPDATE myTable 
SET myStringCol = 'someVal', myDateCol = NOW() 
WHERE myId = 123;

次の制約を満たす必要がありますが、実行可能なすべてのソリューションを使用します。

  • 更新前にクエリNOW()を実行すると、不要なリクエストでサーバーがフラッディングされます
  • 残念ながら、SP やトリガーを使用することはできません。
  • .Net DateTime を使用することはできません。サーバー時間でなければなりません。
  • 条件により、テーブル列にデフォルト値を使用することはできません
  • create、update、delete (nhforge.org/doc/nh/en/index.html 17.3) のためのカスタム SQL の可能性は知っていますが、条件を実装するにはどうすればよいですか?
  • MySQL 5.1 / 5.5 / 5.6 の使用
  • 最新の NH 3.3.2 の使用
4

1 に答える 1

0

INSERT と UPDATE で生成されたプロパティを使用できます。ドキュメントの第 5 章を参照してください http://nhibernate.info/doc/nh/en/index.html#mapping-generated

于 2013-02-02T17:58:24.600 に答える