/// <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); }
/// <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); }