NHibernate懒洋洋

NHibernate懒洋洋,nhibernate,jqgrid,lazy-loading,jqgrid-asp.net,Nhibernate,Jqgrid,Lazy Loading,Jqgrid Asp.net,对于ASP.Net项目,我使用(Fluent)NHibernate进行持久化,使用JQGrid在表中显示数据。但是当我想使用JQGrid的自动完成功能时,我会得到一个System.ArgumentException:列'HibernateLazyInitializer'不属于此表。在AJAX请求中获取数据。 但是这个错误只是偶尔发生的,并且当列表中使用某种proxyclass时才会发生。因此,我认为这与NHibernate的懒散负荷有关 protected new void Page_Load(

对于ASP.Net项目,我使用(Fluent)NHibernate进行持久化,使用JQGrid在表中显示数据。但是当我想使用JQGrid的自动完成功能时,我会得到一个
System.ArgumentException:列'HibernateLazyInitializer'不属于此表。
在AJAX请求中获取数据。 但是这个错误只是偶尔发生的,并且当列表中使用某种proxyclass时才会发生。因此,我认为这与NHibernate的懒散负荷有关

protected new void Page_Load(object sender, EventArgs e)
  {
     base.Page_Load(sender, e);
     _jqAutoComplete.DataSource = Session.CreateCriteria<Domain.Brand>()
            .List<Domain.Brand>();
     _jqAutoComplete.DataBind();
  }
受保护的新无效页面\u加载(对象发送方,事件参数e)
{
基本页面加载(发送方,e);
_jqAutoComplete.DataSource=Session.CreateCriteria()
.List();
_jqAutoComplete.DataBind();
}
通常懒散加载是一个非常酷的特性。只有在这种情况下,它才会导致错误,因此我不想在整个项目中禁用它。那么,有没有一种方法可以修改CreateCriteria,使其在这种情况下不使用LazyLoading,而是使用WareLoading? 还是我还遗漏了什么?
如果有一个了解懒散的好教程,我也会很高兴。

我以不同的方式解决了这个问题。现在,我将域对象从ViewModel转换为相应的对象。我正在用它来完成映射

protected new void Page_Load(object sender, EventArgs e)
  {
     base.Page_Load(sender, e);

     var objList = service.getList<Domain.Brand>();
     IList<V> list = new List<ViewModel.Brand>();

     foreach (var el in objList)
     {
        var brand = new ViewModel.Brand();
        list.Add(brand.InjectFrom<FlatLoopValueInjection>(el));
     }

     _jqAutoComplete.DataSource = list;
     _jqAutoComplete.DataBind();
  }
受保护的新无效页面\u加载(对象发送方,事件参数e)
{
基本页面加载(发送方,e);
var objList=service.getList();
IList list=新列表();
foreach(对象列表中的变量el)
{
var brand=新的ViewModel.brand();
列表。添加(品牌。从(el)开始);
}
_jqAutoComplete.DataSource=list;
_jqAutoComplete.DataBind();
}

这个解决方案对我很有效,但我对此并不完全满意。

我以不同的方式解决了这个问题。现在,我将域对象从ViewModel转换为相应的对象。我正在用它来完成映射

protected new void Page_Load(object sender, EventArgs e)
  {
     base.Page_Load(sender, e);

     var objList = service.getList<Domain.Brand>();
     IList<V> list = new List<ViewModel.Brand>();

     foreach (var el in objList)
     {
        var brand = new ViewModel.Brand();
        list.Add(brand.InjectFrom<FlatLoopValueInjection>(el));
     }

     _jqAutoComplete.DataSource = list;
     _jqAutoComplete.DataBind();
  }
受保护的新无效页面\u加载(对象发送方,事件参数e)
{
基本页面加载(发送方,e);
var objList=service.getList();
IList list=新列表();
foreach(对象列表中的变量el)
{
var brand=新的ViewModel.brand();
列表。添加(品牌。从(el)开始);
}
_jqAutoComplete.DataSource=list;
_jqAutoComplete.DataBind();
}

这个解决方案对我来说很有效,但我对此并不完全满意。

您指的是哪种“自动完成”功能以及如何使用它?那就是
\u jqAutoComplete
对象?您是否使用jqGrid的商业版本?请检查以下问题:是。我将商业版与名为
Trirand.Web.UI.WebControls.JQAutoComplete
的类一起使用。您是否尝试将问题发布在中?没有。我明白了,这是一个问题,因为我的代码是jqGrid中没有的。你指的是什么“自动完成”功能,以及如何使用它?那就是
\u jqAutoComplete
对象?您是否使用jqGrid的商业版本?请检查以下问题:是。我将商业版与名为
Trirand.Web.UI.WebControls.JQAutoComplete
的类一起使用。您是否尝试将问题发布在中?没有。我明白了,这是一个问题,因为我的代码是jqGrid中没有的。埃尔登没有参加全球环境基金,而是参加了三方论坛(forum brauchbare Hilfe bekommen könnte)。