public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo, EntityTypeBuilder entityBuilder, IShamanLogger logger) { const string source = nameof(SqlServerReflectionService) + "." + nameof(UpdateColumnInfoOnModelCreating); if (!UseDataType) { return; } if (columnInfo.ClrProperty?.PropertyType != typeof(string)) { return; } var modelInfo = dbSetInfo.Model; var collation = GetCollation(columnInfo, dbSetInfo, modelInfo); if (string.IsNullOrEmpty(collation)) { logger.Log(source, $"Column {dbSetInfo.GetSqlTableName()}.{columnInfo.PropertyName} has no SQL collation info"); return; } var isUnicode = columnInfo.IsUnicode ?? modelInfo.DefaultIsUnicodeText; var sqlDataType = SqlServerFixerService.MkStringType(isUnicode, columnInfo.MaxLength, collation); var action = $"{columnInfo.PropertyName}.HasColumnType(\"{sqlDataType}\")"; logger.LogCalling(source, dbSetInfo.EntityType, action); entityBuilder.Property(columnInfo.PropertyName).HasColumnType(sqlDataType); }
public void UpdateColumnInfoInModelInfo(ColumnInfo columnInfo, IDbSetInfo dbSetInfo, IShamanLogger logger) { var propertyInfo = columnInfo.ClrProperty; if (propertyInfo?.PropertyType != typeof(string)) { return; } var collation = GetCollation(propertyInfo); if (string.IsNullOrEmpty(collation)) { return; } var target = $"column {dbSetInfo.GetSqlTableName()}.{columnInfo.ColumnName}"; UpdateAnnotation(columnInfo, collation, logger, target); }