protected override Expression VisitConstant(ConstantExpression node) { if (node.IsQueryable()) { mCannotBeEvaluated = true; } return(base.VisitConstant(node)); }
protected override Expression VisitConstant(ConstantExpression node) { if (node.IsQueryable()) { mLimitingDataReaderMode = LimitingDataReaderMode.None; mIsSequence = true; mElementType = TypeSystem.GetElementType(node.Type); var schema = @"dbo"; var table = mElementType.Name; var tableAttributes = mElementType.GetCustomAttributes(typeof(TableAttribute), true).Cast <TableAttribute>(); foreach (var tableAttribute in tableAttributes) { if (!string.IsNullOrEmpty(tableAttribute.SchemaName)) { schema = tableAttribute.SchemaName; } if (!string.IsNullOrEmpty(tableAttribute.Name)) { table = tableAttribute.Name; } } mText.Append(@"SELECT"); var separator = @" "; var properties = mElementType.GetProperties(BindingFlags.Public | BindingFlags.Instance) .Where(a => a.CanRead && a.CanWrite); foreach (var property in properties) { mProperties.Add(property); var column = GetColumnName(property); mText.Append(separator); mText.Append(EncodeSqlName(column)); separator = @", "; } mText.Append(@" FROM "); mText.Append(EncodeSqlName(schema)); mText.Append(@"."); mText.Append(EncodeSqlName(table)); } else { mText.Append(node.Value.ToSqlConstant()); } return(base.VisitConstant(node)); }