protected override Expression VisitObjectReference(SqlObjectReferenceExpression objectReferenceExpression)
        {
            this.Write("ObjectReference(");
            this.Write(objectReferenceExpression.Type.Name);
            this.Write(")");

            return(objectReferenceExpression);
        }
Exemple #2
0
        protected override Expression VisitObjectReference(SqlObjectReferenceExpression sqlObjectReferenceExpression)
        {
            var arrayOfValues = Expression.NewArrayInit(typeof(object), sqlObjectReferenceExpression
                                                        .Bindings
                                                        .OfType <MemberAssignment>()
                                                        .Select(c => (Expression)Expression.Convert(c.Expression.NodeType == (ExpressionType)SqlExpressionType.Column ? this.ConvertColumnToDataReaderRead((SqlColumnExpression)c.Expression, c.Expression.Type.MakeNullable()) : this.Visit(c.Expression), typeof(object))).ToArray());

            var method = MethodInfoFastRef.DataAccessModelGetReferenceByPrimaryKeyWithPrimaryKeyValuesMethod.MakeGenericMethod(sqlObjectReferenceExpression.Type);

            return(Expression.Call(Expression.Property(this.objectProjector, nameof(ObjectProjector.DataAccessModel)), method, arrayOfValues));
        }
        protected virtual Expression VisitObjectReference(SqlObjectReferenceExpression objectReferenceExpression)
        {
            var newBindings = this.VisitBindingList(objectReferenceExpression.Bindings);

            if (!ReferenceEquals(newBindings, objectReferenceExpression.Bindings))
            {
                return(new SqlObjectReferenceExpression(objectReferenceExpression.Type, newBindings));
            }
            else
            {
                return(objectReferenceExpression);
            }
        }