Skip to content

Don't currently support idents of type X #2707

Closed
@pasqualedante

Description

@pasqualedante

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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions