0

最近Nhibernateを使い始めましたが、ASP.NETコントロールにバインドする必要があるまでは非常に満足しています。グリッドビューを製品のコレクション(IList)にバインドする際に大きな問題が発生していました。結局、IListをDataTableに変換するための小さなルーチンを修正することを余儀なくされました。データテーブルに入ると、問題なく動作しました。

標準のDropdownboxをProductsのコレクション(IList)の1つのフィールドにバインドするときが来ましたが、再び問題が発生しているようです。

だから、これは私が何か間違ったことをしているに違いないという結論に私をもたらしましたか?

NHibernateから返されるクラス(私の場合は製品)のコレクション(IList)にASP.NETコントロールをバインドできないとは信じられません。

誰かが状況についてフィードバックをいただければ幸いです...私は途方に暮れています

ありがとうございました

4

2 に答える 2

0

問題は、バインドできるからということではありません。一般に、このような問題は、間違ったタイミングでバインドしているときに発生します。

NHibernateは怠惰をサポートします。したがって、クエリが遅延し、返されたオブジェクトのプロパティが遅延している場合、アイテムとプロパティが参照されるまで、値はデータベースから取得されません。これらをUIのコントロールにバインドすると、ページがレンダリングされるまで値は抽出されません。

この時点で、データベース接続がすでに閉じられている可能性があります。

簡単な解決策は、バインドしているデータが遅延ロードされないようにすることです。

于 2010-11-16T06:27:02.833 に答える
0

List<T>orオブジェクトを作成しBindingList<T>、IListオブジェクトをクエリからコンストラクターに渡します。IListオブジェクトが汎用リストでない場合は、LINQを使用できますilistObject.Cast<T>().ToList()

于 2010-11-17T06:10:18.960 に答える