Beispiel #1
0
        public static Entity_Table Get(Type _Type)
        {
            var _Entity_Table = new Entity_Table();
            var _TableAttr    = ReflexHelper.GetTableAttribute(_Type);

            _Entity_Table.TableName = _TableAttr == null ? _Type.Name : _TableAttr.TableName;
            var _Fields = ReflexHelper.GetPropertyInfos(_Type);

            foreach (var item in _Fields)
            {
                var _FieldAttribute = (Attribute.GetCustomAttribute(item, typeof(FieldAttribute)) as FieldAttribute);
                if (_FieldAttribute == null)
                {
                    continue;
                }
                var _FieldInfo = new Entity_FieldInfo()
                {
                    Alias        = _FieldAttribute.Alias,
                    FieldName    = item.Name,
                    FieldType    = item.PropertyType,
                    IsIdentity   = _FieldAttribute.IsIdentity,
                    IsIgnore     = _FieldAttribute.IsIgnore,
                    IsPrimaryKey = _FieldAttribute.IsPrimaryKey
                };

                if (_FieldAttribute.IsPrimaryKey)
                {
                    _Entity_Table.KeyFieldName = _FieldInfo.FieldName;
                    _Entity_Table.KeyFieldInfo = _FieldInfo;
                }
                _Entity_Table.Fields.Add(_FieldInfo);
            }
            return(_Entity_Table);
        }
Beispiel #2
0
        /// <summary>
        /// 对象 转换为 MemberInitExpression
        /// </summary>
        /// <param name="_type"></param>
        /// <returns></returns>
        public static MemberInitExpression MemberInit <T>(T _entity)
        {
            var proInfo = ReflexHelper.GetPropertyInfos(typeof(T));

            var list = new List <MemberBinding>();

            foreach (var item in proInfo)
            {
                list.Add(Expression.Bind(item, Expression.Constant(item.GetValue(_entity), item.PropertyType)));
            }

            var newExpr = Expression.New(typeof(T));

            return(Expression.MemberInit(newExpr, list));
        }