Ejemplo n.º 1
0
 public static string GetColumnName(this PropertyInfo prop)
 {
     if (prop.IsDefined(typeof(ColumnAttribute), true))
     {
         ColumnAttribute attribute = (ColumnAttribute)prop.GetCustomAttribute(typeof(ColumnAttribute), true);
         return(attribute.GetColumnName());
     }
     else
     {
         return(prop.Name);
     }
 }
Ejemplo n.º 2
0
        internal static Dictionary <string, object> GetFieldsWithValues <T>(T entity, List <PropertyInfo> properties, bool ignoreAutoIncrementKey) where T : new()
        {
            var output = new Dictionary <string, object>();

            properties.ForEach(property =>
            {
                if (Attribute.IsDefined(property, typeof(ForeignKeyModelAttribute)) ||
                    Attribute.IsDefined(property, typeof(IgnoreAttribute)) ||
                    (ignoreAutoIncrementKey && KeyAttribute.IsAutoIncrementKey(property)))     // Ignore Auto increment key
                {
                    return;
                }

                var columnName = ColumnAttribute.GetColumnName(typeof(T), property.Name);
                output.Add(columnName, property.GetValue(entity));
            });

            return(output);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 解析属性字段参数。
        /// </summary>
        /// <param name="exp"></param>
        /// <param name="member"></param>
        /// <returns></returns>
        private string Resolver(MemberExpression exp, MemberInfo member)
        {
            string result = string.Empty;

            if (exp != null && (exp.Expression == null || exp.Expression.NodeType != ExpressionType.Parameter))//静态值
            {
                object value = GetExpressionValue(exp);
                if (value is Array)//数组解析为p1,p2,p3,
                {
                    var arr = value as Array;
                    foreach (var item in arr)
                    {
                        result += AddParameter(item) + ",";
                    }
                }
                else
                {
                    result += AddParameter(value, member?.Name) + ",";
                }
            }
            else
            {
                if (member != null && IsAnonymousType(member.DeclaringType))
                {
                    AnonymousMemberMapper[member] = exp.Member;
                }
                var realMember = GetRealMemberInfo(exp.Member);//递归获取。
                if (!ColumnInfos.ContainsKey(realMember))
                {
                    ColumnInfos[realMember] = new ColumnInfo()
                    {
                        Alias      = member?.Name,
                        Source     = SourceInfos[realMember.ReflectedType],
                        ColumnText = ColumnAttribute.GetColumnName(realMember)
                    };
                }
                result += Adapter.Field(ColumnInfos[realMember], !(member == null)) + ",";
            }
            return(result);
        }