protected override Expression VisitObjectReference(SqlObjectReferenceExpression objectReferenceExpression) { this.Write("ObjectReference("); this.Write(objectReferenceExpression.Type.Name); this.Write(")"); return(objectReferenceExpression); }
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); } }