我最近开始使用Nhibernate,我很满意,直到我需要BIND到ASP.NET控件。我遇到了将gridview绑定到Products(IList)集合的主要问题。最后,我被迫纠正一个小例程,将我的IList转换为DataTable。一旦它在数据表中,它就能完美无缺。
现在已经到了将标准Dropdownbox绑定到产品集合(IList)的1个字段的时候了,但似乎我再次遇到问题。
所以这让我得出的结论是我一定做错了什么?
我无法相信将ASP.NET控件绑定到从NHibernate返回的类(在我的情况下是产品)的集合(IList)中是不可能的。
我真的很感激任何人对此情况的任何反馈......我不知所措。
谢谢
答案 0 :(得分:0)
问题不在于你无法绑定,因为你可以。一般来说,当您在错误的时间进行约束时会出现类似的问题。
NHibernate支持懒惰。因此,如果您的查询是惰性的,并且返回的对象上的属性是惰性的,那么在引用项和属性之前,不会从数据库中提取值。如果将这些绑定到UI中的控件,则在呈现页面之前不会提取值。
此时,您很可能已关闭数据库连接。
简单的解决方案是确保您绑定的数据不延迟加载。
答案 1 :(得分:0)
创建一个List<T>
或BindingList<T>
对象,并将查询中的IList对象传递给构造函数。如果IList对象不是通用列表,则可以使用LINQ ilistObject.Cast<T>().ToList()
。