2010-11-16 28 views
0

我最近開始使用Nhibernate,我很滿意它,直到我需要綁定到ASP.NET控件。我遇到了一個將gridview綁定到一系列產品(IList)的重大問題。最後,我不得不糾正一個小例程,將我的IList轉換爲DataTable。一旦它處於數據表明它的工作無懈可擊。NHibernate和ASP.NET綁定到IList的<Products>?

現在已經到了將標準Dropdownbox綁定到產品集合(IList)的1個字段的時間,但它似乎又出現了問題。

因此,這使我得出結論,我必須做錯什麼?

我不能相信,將ASP.NET控件綁定到從NHibernate返回的類(在我的情況下,產品)的集合(IList)是不可能的。

我真的很感激任何反饋任何人有這種情況...我很茫然

謝謝

+0

你應該顯示綁定C#和asp.net的代碼,也許有人看到這個問題 – sirrocco 2010-11-17 06:14:25

回答

0

的問題不在於你不能綁定的,因爲你可以。一般來說,當你在錯誤的時間上綁定時,會出現這樣的問題。

NHibernate支持懶惰。因此,如果您的查詢是懶惰的,並且返回對象的屬性是惰性的,那麼在引用項目和屬性之前,這些值不會從數據庫中提取。如果您將這些綁定到UI中的控件,那麼在頁面呈現之前,這些值將不會被提取。

此時有一個很好的機會,你已經關閉了你的數據庫連接

簡單的解決方案是確保您綁定的數據是而不是延遲加載。

+0

我不相信它是懶惰加載,我做的方法.LIST將其轉換爲列表,所以在這一點,我看通過VS 2008的對象,果然一切都在那裏,但在以下格式.. – Martin 2010-11-16 06:29:18

+0

LIST 和產品類中的每個列表.. – Martin 2010-11-16 06:29:43

+0

@OJ良好的分析,不好的解決方案。而不是消除延遲加載,正確的方法是在請求級別處理會話。有很多例子。 – 2010-11-16 12:58:10

0

創建一個List<T>BindingList<T>對象並將IList對象從查詢傳遞給構造函數。如果IList對象不是通用列表,則可以使用LINQ,ilistObject.Cast<T>().ToList()

相關問題