Миграция переводит названия таблиц в нижний регистр

99
12 мая 2021, 17:10

Проект ASP.NET Core WebAPI, ORM EF Core, база данных MySQL, провайдер Pomelo. Добавил Identity, создал миграцию и там с названиями всё в порядке:

migrationBuilder.CreateTable(
    name: "AspNetRoles",
    columns: table => new
    {
        Id = table.Column<string>(nullable: false),
        Name = table.Column<string>(maxLength: 256, nullable: true),
        NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
        ConcurrencyStamp = table.Column<string>(nullable: true)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_AspNetRoles", x => x.Id);
    });

После применения миграции в БД все таблицы в нижнем регистре:

Не знаю распространяются ли настройки Json на миграцию, но на всякий случай конфиг из Startup:

services.AddMvcCore()
    .AddJsonFormatters(options => options.ContractResolver = new CamelCasePropertyNamesContractResolver())
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.Converters.Add(new StringEnumConverter());
        options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        options.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Include;
        options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
    })
Answer 1

Для того чтобы не писать каждой сущности имя руками:

[Table("entity")]
public class Entity
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Есть два варианта, один из которых (кастомные конвенции) ещё в EF Core не завезли и доступен только в EF6. Второй вариант - настройка в OnModelCreating:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    foreach (var entityType in modelBuilder.Model.GetEntityTypes())
    {
        entityType.Relational().TableName = entityType.Relational().TableName.ToLower();
    }

Аналогично поступить и с остальными сущностями базы - индексы, внешние ключи.

READ ALSO
Не скрываются папки после обновления через функцию SHChangeNotify

Не скрываются папки после обновления через функцию SHChangeNotify

Сначала я отключаю просмотр всех скрытых файлов и папок через реестр: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

131
Как бегущую строку сделать более плавной и гладкой?

Как бегущую строку сделать более плавной и гладкой?

Имеется код который запускает label и он движется ровно от середины до края

249
C#, Не удается запустить службу Windows

C#, Не удается запустить службу Windows

Написал службу Windows на C#При запуске выдается ошибка: Не удалось запустить службу TFFU на Локальный компьютер

113
Unity не работает клик на UI элемент

Unity не работает клик на UI элемент

В игре есть инвентарь, и при клике на какой-либо слот беру предмет, но перед этим хочу вообще проверить, работает ли клик, и данный код не срабатывает,...

130