シナリオは次のとおりです。
NHibernate を使用した winforms アプリケーションがあります。起動すると、DataGridView に NHibernate クエリの結果が入力されます。この部分は正常に動作します。そのリストのレコードを更新してセッションをフラッシュすると、更新によってデータベースが取り込まれます。更新後にフォームを閉じるときに、メソッドを呼び出してオブジェクトのリストを取得し、DataGridView に再度データを入力して変更を取得し、他のユーザーが行った可能性のあるその他の変更も取得します。問題は、更新されたレコード、NHibernate が提供するリストの変更を反映していないことです。レコードを挿入または削除すると、すべて正常に動作します。この動作が発生するのは、更新したときだけです。キャッシングメカニズムを備えたNHibernateに絞り込みました。更新後にキャッシュを使用する代わりに、NHibernate にデータベースから取得させる方法がわかりません。NHibernate フォーラムに投稿しましたが、彼らからの提案はうまくいきませんでした。私はこれを述べましたが、誰も返事をしませんでした。正しく行わなかった場合に備えて、試したことを述べるつもりはありません。私が正確に試したことで回答した場合は、回答のコメントに記載します。
これは、リストを取得するために使用するコードです。
public IList<WorkOrder> FindBy(string fromDate, string toDate)
{
IQuery query = _currentSession.CreateQuery("from WorkOrder wo where wo.Date >= ? and wo.Date <= ?");
query.SetParameter(0, fromDate);
query.SetParameter(1, toDate);
return query.List<WorkOrder>();
}
セッションは、構築時にクラスに渡されます。マッピング ファイルも投稿できますが、他のすべてが機能するため、何か問題があるかどうかはわかりません。誰もこれを前に見たことがありますか?これは私が NHibernate を使用した最初のプロジェクトです。助けてくれてありがとう。