1

ビューによって計算されたプロパティを持つエンティティを使用しています。私のサンプルシナリオでは:

  1. データベースからエンティティを取得しています & このエンティティのいくつかのプロパティを変更しています
  2. このエンティティを保存しています session.Update(entity)
  3. ビューによって計算された一部の列は、変更の結果として変更される可能性があるため、 session. Refresh(entity) を呼び出しています。

したがって、NHibernate は、データベースへの 3 回のトリップを強制された場合です。

私が達成しようとしているのは、旅行を2回だけにすることです。

  1. データベースからエンティティを取得しています & このエンティティのいくつかのプロパティを変更しています
  2. このエンティティ session.Update(entity) を保存して、1 回のデータベース トリップで更新しています。

出来ますか?

4

1 に答える 1

4

いいえ、できません。select、update、select の 3 つの SQL コマンドを発行する必要があります。NHibernate はバッチ処理をサポートしていますが、混合コマンドではなく、挿入または更新をまとめてバッチ処理します。

さらに、NHibernate はGenerated Propertiesをサポートしているため、これらの列を手動で更新する必要はありません (依然としてラウンドトリップが必要ですが、透過的です)。

于 2012-11-23T13:50:56.700 に答える