示例#1
0
        public virtual SqlFieldInfo VisitField <TEntity, TProperty>(Expression <Func <TEntity, TProperty> > exp)
            where TEntity : class, new()
        {
            var ret = new SqlFieldInfo();

            // Getting table name and schema name
            if (exp.Parameters.Count != 1)
            {
                throw new ArgumentException("Too many parameters in the expression.");
            }
            //var param = exp.Parameters.Single();
            var entities = (IDictionary <string, EntityType>)EntityTypesField.GetValue(context.Model);
            var et       = entities.Single(x => x.Value.ClrType == typeof(TEntity)).Value;

            ret.Table  = GetTableName(et);
            ret.Schema = GetSchemaName(et);

            // Getting field name
            var body = exp.Body as MemberExpression;

            if (body == null)
            {
                throw new NotSupportedException(exp.Body.GetType().Name);
            }
            var columnAttr = body.Member.GetCustomAttribute <ColumnAttribute>();

            ret.Column = columnAttr != null ? columnAttr.Name : body.Member.Name;

            return(ret);
        }
示例#2
0
        public virtual string ParseField(SqlFieldInfo field)
        {
            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(field.Table))
            {
                sb.Append(sqlGenerationHelper.DelimitIdentifier(field.Table))
                .Append(".");
            }
            sb.Append(sqlGenerationHelper.DelimitIdentifier(field.Column));
            return(sb.ToString());
        }
示例#3
0
        public virtual SqlFieldInfo VisitField <TEntity, TProperty>(Expression <Func <TEntity, TProperty> > exp)
            where TEntity : class
        {
            var ret = new SqlFieldInfo();

            // Getting table name and schema name
            if (exp.Parameters.Count != 1)
            {
                throw new ArgumentException("Too many parameters in the expression.");
            }
            var param = exp.Parameters.Single();
            var et    = context.Model.FindEntityType(typeof(TEntity));

            ret.Table  = GetTableName(et);
            ret.Schema = GetSchemaName(et);


            // Getting field name
            var body = exp.Body as MemberExpression;

            if (body == null)
            {
                throw new NotSupportedException(exp.Body.GetType().Name);
            }

            var columnAttr = body.Member.GetCustomAttribute <ColumnAttribute>();

            if (columnAttr != null)
            {
                ret.Column = columnAttr.Name;
            }
            else
            {
                ret.Column = et.FindProperty(body.Member.Name).GetColumnName();
            }

            return(ret);
        }
示例#4
0
 public virtual string ParseShortTable(SqlFieldInfo field)
 {
     return(sqlGenerationHelper.DelimitIdentifier(field.Table));
 }