Closed
Description
There is an issue when when I project an instance of type X into a dto as show under:
var tt = _database.GetSession().Query<Task>()
.Select(
x => new DTOTask {
CustomerName = (((x == null) ? null : x.Customer) == null)
? null
: x.Customer.Name,
}).ToList();
I attach here a unit test that show the issue in action: issue_in_action.zip The NH build is the 5.3.7 one.
Thanks in advance.
The complete stack-trace is
Don't currently support idents of type Customer
in NHibernate.Hql.Ast.HqlIdent..ctor(IASTFactory factory, Type type)
in NHibernate.Hql.Ast.HqlTransparentCast..ctor(IASTFactory factory, HqlExpression expression, Type type)
in NHibernate.Linq.Visitors.HqlGeneratorExpressionVisitor.VisitConditionalExpression(ConditionalExpression expression)
in NHibernate.Linq.Visitors.HqlGeneratorExpressionVisitor.VisitExpression(Expression expression)
in NHibernate.Linq.Visitors.HqlGeneratorExpressionVisitor.TranslateEqualityComparison(BinaryExpression expression)
in NHibernate.Linq.Visitors.HqlGeneratorExpressionVisitor.VisitBinaryExpression(BinaryExpression expression)
in NHibernate.Linq.Visitors.HqlGeneratorExpressionVisitor.VisitExpression(Expression expression)
in NHibernate.Linq.Visitors.SelectClauseVisitor.Visit(Expression expression)
in System.Linq.Expressions.ExpressionVisitor.VisitConditional(ConditionalExpression node)
in System.Linq.Expressions.ConditionalExpression.Accept(ExpressionVisitor visitor)
in NHibernate.Linq.Visitors.SelectClauseVisitor.Visit(Expression expression)
in System.Linq.Expressions.ExpressionVisitor.VisitMemberAssignment(MemberAssignment node)
in System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(MemberBinding node)
in System.Linq.Expressions.ExpressionVisitor.Visit[T](ReadOnlyCollection`1 nodes, Func`2 elementVisitor)
in System.Linq.Expressions.ExpressionVisitor.VisitMemberInit(MemberInitExpression node)
in System.Linq.Expressions.MemberInitExpression.Accept(ExpressionVisitor visitor)
in NHibernate.Linq.Visitors.SelectClauseVisitor.Visit(Expression expression)
in NHibernate.Linq.Visitors.SelectClauseVisitor.VisitSelector(Expression expression)
in NHibernate.Linq.Visitors.QueryModelVisitor.VisitSelectClause(SelectClause selectClause, QueryModel queryModel)
in Remotion.Linq.Clauses.SelectClause.Accept(IQueryModelVisitor visitor, QueryModel queryModel)
in Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel queryModel)
in NHibernate.Linq.Visitors.QueryModelVisitor.Visit()
in NHibernate.Linq.Visitors.QueryModelVisitor.GenerateHqlQuery(QueryModel queryModel, VisitorParameters parameters, Boolean root, Nullable`1 rootReturnType)
in NHibernate.Linq.NhLinqExpression.Translate(ISessionFactoryImplementor sessionFactory, Boolean filter)
in NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor factory)
in NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow, IDictionary`2 enabledFilters)
in NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow)
in NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression queryExpression)
in NHibernate.Linq.DefaultQueryProvider.PrepareQuery(Expression expression, IQuery& query)
in NHibernate.Linq.DefaultQueryProvider.ExecuteList[TResult](Expression expression)
in NHibernate.Linq.NhQueryable`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
in System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
in System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
in Edigit.Views.CRM.ViewModels.EditAttivitaViewModel.<>c__DisplayClass205_0.<GetAppointments>b__0() in D:\edigit-international-srl\UTS-OPEN\Edigit.Apps.CRM\Edigit.Views.CRM\ViewModels\EditAttivitaViewModel.cs:riga 1002
in System.Threading.Tasks.Task`1.InnerInvoke()
in System.Threading.Tasks.Task.Execute()
--- Fine traccia dello stack da posizione precedente dove è stata generata l'eccezione ---
in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
in Edigit.Views.CRM.ViewModels.EditAttivitaViewModel.<GetAppointments>d__205.MoveNext() in D:\edigit-international-srl\UTS-OPEN\Edigit.Apps.CRM\Edigit.Views.CRM\ViewModels\EditAttivitaViewModel.cs:riga 1000
--- Fine traccia dello stack da posizione precedente dove è stata generata l'eccezione ---
in System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
in System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
in System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
in Edigit.Views.CRM.ViewModels.EditAttivitaViewModel.<OnActiveTabIndexChanged>d__88.MoveNext() in D:\edigit-international-srl\UTS-OPEN\Edigit.Apps.CRM\Edigit.Views.CRM\ViewModels\EditAttivitaViewModel.cs:riga 366
--- Fine traccia dello stack da posizione precedente dove è stata generata l'eccezione ---
in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
in System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
in System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)