Ich benutze den alten Linq-Provider für nHibernate und warten geduldig für den neuen zu kommen. Ich bin mir sicher, dass es mir viel Schmerz ersparen wird. Wie auch immer, ich habe ein Problem mit dem Code unten, da es eine "Objekt Referenz nicht auf eine Instanz eines Objekts festgelegt" generiert. Die Zeile "c.Disciplines.Any (d => disciplines.Contains (d))" ist derjenige, der das Problem verursacht. Gibt es irgendwelche bekannten Probleme mit einer Aussage wie dieser nHibernate Linq?nhibernate Linq
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)
Stack Trace:
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)
Sie sagen, dass "c.Disciplines.Any (d => disciplines.Contains (d))" Ihr Problem ist, weil es den Fehler nicht entfernen, oder weil das die Zeilennummer ist, die gemeldet wird? –
Irgendwelche Lösungen noch? – Bertvan