public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo, EntityTypeBuilder entityBuilder, IShamanLogger logger) { const string source = nameof(DefaultValueColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating); var dv = columnInfo.DefaultValue; if (columnInfo.DefaultValue == null) { return; } string action; switch (dv.Kind) { case ValueInfoKind.Clr: action = $"{columnInfo.PropertyName}.HasDefaultValue(\"{columnInfo.DefaultValue.ClrValue}\")"; logger.LogCalling(source, dbSetInfo.EntityType, action); entityBuilder.Property(columnInfo.PropertyName).HasDefaultValue(columnInfo.DefaultValue.ClrValue); break; case ValueInfoKind.Sql: action = $"{columnInfo.PropertyName}.HasDefaultValueSql(\"{columnInfo.DefaultValue.SqlValue}\")"; logger.LogCalling(source, dbSetInfo.EntityType, action); entityBuilder.Property(columnInfo.PropertyName).HasDefaultValueSql(columnInfo.DefaultValue.SqlValue); break; default: throw new ArgumentOutOfRangeException(); } }
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 UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo, EntityTypeBuilder entityBuilder, IShamanLogger logger) { const string name = nameof(UnicodeColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating); if (columnInfo.IsUnicode == null) { return; } var action = $"IsUnicode({columnInfo.IsUnicode})"; logger.LogCalling(name, dbSetInfo.EntityType, action); entityBuilder.Property(columnInfo.PropertyName).IsUnicode(columnInfo.IsUnicode.Value); }
public void UpdateColumnInfoOnModelCreating(IDbSetInfo dbSetInfo, ColumnInfo columnInfo, EntityTypeBuilder entityBuilder, IShamanLogger logger) { const string name = nameof(DecimalPlacesColumnInfoUpdateService) + "." + nameof(UpdateColumnInfoOnModelCreating); if (columnInfo.MaxLength == null || columnInfo.DecimalPlaces == null) { return; } var type = $"decimal({columnInfo.MaxLength},{columnInfo.DecimalPlaces})"; var action = $"{columnInfo.PropertyName}.HasColumnType(\"{type}\")"; logger.LogCalling(name, dbSetInfo.EntityType, action); entityBuilder.Property(columnInfo.PropertyName).HasColumnType(type); }