2009-05-29 13 views
5

मैं nHibernate के लिए पुराने linq प्रदाता का उपयोग कर रहा हूं और बाहर आने के लिए धैर्यपूर्वक का इंतजार कर रहा हूं। मुझे यकीन है कि यह मुझे बहुत दर्द बचाएगा। वैसे भी, मुझे नीचे दिए गए कोड के साथ समस्या है क्योंकि यह "ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है" उत्पन्न करता है। लाइन "सी। डिस्प्लिन्स। एनी (डी => विषयों। (डी))" समस्या का कारण बनता है। nHibernate लिंक का उपयोग कर इस तरह के बयान के साथ कोई जानकारी है?निबर्ननेट लिंक

var agencies = m_AgencyRepository.Linq; 

Discipline[] disciplines = user.Disciplines.ToArray<Discipline>(); 

return (from c in agencies 
        where (String.IsNullOrEmpty(criteria.AgencyName) || c.AgencyName.Contains(criteria.AgencyName)) 
        && (criteria.AgencyType == null || c.AgencyType.AgencyTypeId == criteria.AgencyType) 
        && (String.IsNullOrEmpty(criteria.AgencyLevel) || c.AgencyLevel.AgencyLevelId == criteria.AgencyLevel) 
        && (c.Disciplines.Any(d => disciplines.Contains(d))) 
select c) 

स्टैक ट्रेस: ​​

at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetEntityName(ICriteria subcriteria, String propertyName) 
    at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetType(ICriteria subcriteria, String propertyName) 
    at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetTypeUsingProjection(ICriteria subcriteria, String propertyName) 
    at NHibernate.Criterion.InExpression.GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery) 
    at NHibernate.Criterion.Junction.GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery) 
    at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetQueryParameters() 
    at NHibernate.Criterion.SubqueryExpression.InitializeInnerQueryAndParameters(ICriteriaQuery criteriaQuery) 
    at NHibernate.Criterion.SubqueryExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) 
    at NHibernate.Criterion.Junction.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) 
    at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2 enabledFilters) 
    at NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor factory, CriteriaImpl criteria, String rootEntityName, IDictionary`2 enabledFilters) 
    at NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2 enabledFilters) 
    at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) 
    at NHibernate.Impl.CriteriaImpl.List(IList results) 
    at NHibernate.Impl.CriteriaImpl.List() 
    at NHibernate.Impl.CriteriaImpl.UniqueResult() 
    at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.HandleAggregateCall(MethodCallExpression call) 
    at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.VisitMethodCall(MethodCallExpression call) 
    at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp) 
    at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression exp) 
    at NHibernate.Linq.Visitors.ImmediateResultsVisitor`1.GetResults(MethodCallExpression expr) 
    at NHibernate.Linq.Visitors.RootVisitor.HandleImmediateResultsCall(MethodCallExpression call) 
    at NHibernate.Linq.Visitors.RootVisitor.VisitMethodCall(MethodCallExpression expr) 
    at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp) 
    at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression exp) 
    at NHibernate.Linq.Visitors.NHibernateQueryTranslator.Translate(Expression expression, QueryOptions queryOptions) 
    at NHibernate.Linq.NHibernateQueryProvider.Execute(Expression expression) 
    at NHibernate.Linq.QueryProvider.System.Linq.IQueryProvider.Execute[T](Expression expression) 
    at System.Linq.Queryable.Count[TSource](IQueryable`1 source) 
    at PPSS.Services.AgencyRepository.List(AgencyListCriteria criteria, Int32& total) in C:\Development\PPSS\PPSS.Services\Services\Agency\AgencyRepository.cs:line 57 
    at PPSS.Models.AgencyViewData..ctor(AgencyListCriteria criteria) in C:\Development\PPSS\PPSS\Domains\Maintenance\ViewModels\AgencyViewData.cs:line 26 
    at PPSS.Controllers.AgencyController.Index(AgencyListCriteria criteria) in C:\Development\PPSS\PPSS\Domains\Maintenance\Controllers\AgencyController.cs:line 34 
    at lambda_method(ExecutionScope , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
+0

क्या आप कह रहे हैं कि "c.Disciplines.Any (d => विषयों। सामग्री (डी))" आपकी समस्या है क्योंकि इसे हटाने से त्रुटि नहीं मिल रही है, या क्योंकि यह पंक्ति संख्या रिपोर्ट की गई है? –

+0

अभी तक कोई समाधान? – Bertvan

उत्तर

1

आप यह जांच करना कि c.Disciplines में गैर-शून्य है इससे पहले कि यह पर कोई एक कर की कोशिश की है? संभवतः disciplines गैर-शून्य है, लेकिन आप इसे भी देख सकते हैं।

(c.Disciplines != null 
    && c.Disciplines.Any(d => disciplines != null 
           && disciplines.Contains(d))) 
+0

हां, मैंने कोशिश की है। – Craig

5

बदलें

user.Disciplines.ToArray<Discipline>() 

को
user.Disciplines.ToList<Discipline>() 

NHibernate ठोस List वस्तुओं पर .Contains() कॉल को समझता है।

संबंधित मुद्दे