NHibernate和ASP.NET绑定到IList的<products>?</products>

时间:2010-11-16 06:22:24

标签: asp.net nhibernate data-binding ilist asp.net-controls

我最近开始使用Nhibernate,我很满意,直到我需要BIND到ASP.NET控件。我遇到了将gridview绑定到Products(IList)集合的主要问题。最后,我被迫纠正一个小例程,将我的IList转换为DataTable。一旦它在数据表中,它就能完美无缺。

现在已经到了将标准Dropdownbox绑定到产品集合(IList)的1个字段的时候了,但似乎我再次遇到问题。

所以这让我得出的结论是我一定做错了什么?

我无法相信将ASP.NET控件绑定到从NHibernate返回的类(在我的情况下是产品)的集合(IList)中是不可能的。

我真的很感激任何人对此情况的任何反馈......我不知所措。

谢谢

2 个答案:

答案 0 :(得分:0)

问题不在于你无法绑定,因为你可以。一般来说,当您在错误的时间进行约束时会出现类似的问题。

NHibernate支持懒惰。因此,如果您的查询是惰性的,并且返回的对象上的属性是惰性的,那么在引用项和属性之前,不会从数据库中提取值。如果将这些绑定到UI中的控件,则在呈现页面之前不会提取值。

此时,您很可能已关闭数据库连接

简单的解决方案是确保您绑定的数据延迟加载。

答案 1 :(得分:0)

创建一个List<T>BindingList<T>对象,并将查询中的IList对象传递给构造函数。如果IList对象不是通用列表,则可以使用LINQ ilistObject.Cast<T>().ToList()