2011-03-15 2 views
1

ASP.Net 프로젝트의 경우 지속성을 위해 (Fluent) NHibernate를 사용하고 테이블에 데이터를 표시하기 위해 JQGrid를 사용합니다. 하지만 JQGrid의 자동 완성 기능을 사용하려면 AJAX 요청에서 데이터를 얻는 동안 System.ArgumentException: Column 'HibernateLazyInitializer' does not belong with this table.이 표시됩니다. 그러나이 오류는 산발적으로 발생하며 일종의 proxyclass가 목록에 사용 된 경우에만 발생합니다. 따라서 나는 NHibernate의 lazyloading과 관련이 있다고 생각한다.NHibernate LazyLoading

일반적으로 lazyloading은 매우 멋진 기능입니다. 이 경우에만 오류가 발생하므로 전체 프로젝트에서 오류를 사용하지 않으려합니다. 그래서,이 경우에 LazyLoading을 사용하지 않고 EagerLoading을 사용하기위한 CreateCriteria를 수정하는 방법이 있습니까? 내가 놓친 다른 것이 있습니까? LazyLoading을 이해하는 데 유용한 자습서가 있으면 기쁜 마음입니다.

+0

"자동 완성"기능의 의미와 사용 방법은 무엇입니까? 그것은'_jqAutoComplete' 객체입니까? http://www.trirand.net/에서 상용 버전의 jqGrid를 사용합니까? – Oleg

+0

예. 나는'Trirand.Web.UI.WebControls.JQAutoComplete'라고 불리는 클래스와 commerical 버전을 사용합니다. – Towa

+0

[the trirand.net forum] (http://www.trirand.net/forum/)에 질문을 게시하려 했습니까? – Oleg

답변

1

나는이 문제를 다르게 해결했다. 이제 Domain-Object를 ViewModel에서 해당 객체로 변환합니다. 매핑을 완료하기 위해 ValueInjecter을 사용하고 있습니다.

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(); 
    } 

이 솔루션은 저에게는 효과적이지만 그다지 만족스럽지 않습니다.