Пример #1
0
        /// <summary>
        /// 字段信息
        /// </summary>
        /// <param name="field">字段信息</param>
        /// <param name="attribute">数据库成员信息</param>
        internal Field(FieldIndex field, MemberAttribute attribute)
        {
            FieldInfo      = field.Member;
            MemberMapIndex = field.MemberIndex;
            DataMember     = format(attribute, FieldInfo.FieldType, ref IsSqlColumn);
            if ((NullableDataType = DataMember.DataType) == null)
            {
                NullableDataType = FieldInfo.FieldType;
            }
            if ((DataReaderMethod = DataReader.GetMethod(DataType = NullableDataType.nullableType() ?? NullableDataType)) == null)
            {
                if (IsSqlColumn)
                {
                    if (isSqlColumn(DataType))
                    {
                        return;
                    }
                    IsSqlColumn = false;
                }
#if NOJIT
                DataType         = NullableDataType = typeof(string);
                DataReaderMethod = DataReader.GetMethodInfo;
#else
                DataReaderMethod = DataReader.GetMethod(DataType = NullableDataType = typeof(string));
#endif
                IsUnknownJson     = true;
                ToSqlCastMethod   = jsonSerializeMethod.MakeGenericMethod(FieldInfo.FieldType);
                ToModelCastMethod = jsonParseMethod.MakeGenericMethod(FieldInfo.FieldType);
            }
            else
            {
                ToSqlCastMethod   = AutoCSer.Emit.CastType.GetMethod(FieldInfo.FieldType, DataType);
                ToModelCastMethod = AutoCSer.Emit.CastType.GetMethod(DataType, FieldInfo.FieldType);
            }
            SqlFieldName = keywordSearcher.SearchLower(FieldInfo.Name) < 0 ? FieldInfo.Name : toSqlName(FieldInfo.Name);
            if (attribute != null && attribute.IsNowTime && FieldInfo.FieldType == typeof(DateTime))
            {
                IsNowTime = true;
            }
            ToSqlMethod = ConstantConverter.GetMethod(DataType);
        }
Пример #2
0
        /// <summary>
        /// 字段信息
        /// </summary>
        /// <param name="field">字段信息</param>
        /// <param name="attribute">数据库成员信息</param>
        internal Field(FieldIndex field, MemberAttribute attribute)
        {
            FieldInfo      = field.Member;
            MemberMapIndex = field.MemberIndex;
            DataMember     = format(attribute, FieldInfo.FieldType, ref IsSqlColumn);
            if ((NullableDataType = DataMember.DataType) == null)
            {
                NullableDataType = FieldInfo.FieldType;
            }
            if ((DataReaderDelegate = DataReader.GetDelegate(DataType = NullableDataType.nullableType() ?? NullableDataType)) == null)
            {
                if (IsSqlColumn)
                {
                    if (isSqlColumn(DataType))
                    {
                        return;
                    }
                    IsSqlColumn = false;
                }
#if NOJIT
                DataType         = NullableDataType = typeof(string);
                DataReaderMethod = DataReader.GetMethodInfo;
#else
                DataReaderDelegate = DataReader.GetDelegate(DataType = NullableDataType = typeof(string));
#endif
                IsUnknownJson = true;
                AutoCSer.Sql.Metadata.GenericType GenericType = AutoCSer.Sql.Metadata.GenericType.Get(FieldInfo.FieldType);
                ToSqlCastMethod   = GenericType.JsonSerializeMethod;
                ToModelCastMethod = GenericType.JsonDeSerializeMethod;
            }
            else
            {
                ToSqlCastMethod   = AutoCSer.Emit.CastType.GetMethod(FieldInfo.FieldType, DataType);
                ToModelCastMethod = AutoCSer.Emit.CastType.GetMethod(DataType, FieldInfo.FieldType);
            }
            if (attribute != null && attribute.NowTimeType != NowTimeType.None && FieldInfo.FieldType == typeof(DateTime))
            {
                NowTimeType = attribute.NowTimeType;
            }
            ToSqlMethod = ConstantConverter.GetMethod(DataType);
        }