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