Esempio n. 1
0
        /// <summary>
        /// 获取数据库成员信息
        /// </summary>
        /// <param name="member">成员信息</param>
        /// <returns>数据库成员信息</returns>
        internal static MemberAttribute Get(MemberIndexInfo member)
        {
            MemberAttribute value = member.GetAttribute <MemberAttribute>(true);

            if (value == null || value.DataType == null)
            {
                if (member.MemberSystemType.IsEnum)
                {
                    if (value == null)
                    {
                        value = new MemberAttribute();
                    }
                    value.DataType = System.Enum.GetUnderlyingType(member.MemberSystemType);
                }
                else
                {
                    MemberAttribute sqlMember = TypeAttribute.GetAttribute <MemberAttribute>(member.MemberSystemType, false);
                    if (sqlMember != null && sqlMember.DataType != null)
                    {
                        if (value == null)
                        {
                            value = new MemberAttribute();
                        }
                        value.DataType = sqlMember.DataType;
                        if (sqlMember.DataType.nullableType() != null)
                        {
                            value.IsNull = true;
                        }
                    }
                }
            }
            else if (member.MemberSystemType.IsEnum)
            {
                Type enumType = System.Enum.GetUnderlyingType(member.MemberSystemType);
                if (enumType != value.DataType)
                {
                    value.EnumType = enumType;
                }
            }
            if (value == null)
            {
                Type nullableType = member.MemberSystemType.nullableType();
                if (nullableType == null)
                {
                    if (TypeAttribute.GetAttribute <ColumnAttribute>(member.MemberSystemType, false) == null)
                    {
                        Type dataType = member.MemberSystemType.toDataType();
                        if (dataType != member.MemberSystemType)
                        {
                            value          = new MemberAttribute();
                            value.DataType = dataType;
                        }
                    }
                }
                else
                {
                    value        = new MemberAttribute();
                    value.IsNull = true;
                    Type dataType = nullableType.toDataType();
                    if (dataType != nullableType)
                    {
                        value.DataType = dataType.toNullableType();
                    }
                }
            }
            return(value ?? DefaultDataMember);
        }
Esempio n. 2
0
 /// <summary>
 /// 成员信息
 /// </summary>
 /// <param name="member">成员信息</param>
 private MemberIndex(MemberIndexInfo member)
     : base(member)
 {
     MemberType = member.MemberSystemType;
     MemberName = Member.Name;
 }