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); }
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()); }
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); }
public virtual string ParseShortTable(SqlFieldInfo field) { return(sqlGenerationHelper.DelimitIdentifier(field.Table)); }