Как вводить прописные буквы первичного ключа Id of Entity Framework - PullRequest
0 голосов
/ 01 мая 2020

Используя C# и Entity Framework Core

Я создал сущность с Id типа string. Я хотел бы, чтобы этот идентификатор был принудительно указан в верхнем регистре в самой сущности.

Как я могу это сделать?

Я нашел этот код для добавления в DbContext, но он не работает, т.е. foreach ничего не возвращает.

public override int SaveChanges()
{
    foreach (var entry in ChangeTracker.Entries<GLAccountCode>())
    {
        if (entry.State == EntityState.Modified || entry.State == EntityState.Added)
        {
            // Possibly check for null or if it's changed at all.
            entry.Entity.Id = entry.Entity.Id.ToUpper();
        }
    }
    return base.SaveChanges();
}

1 Ответ

0 голосов
/ 02 мая 2020

Код у вас там, безусловно, работает. Я проверил это. Так что, возможно, проблема в остальной части вашего DbContext. Вот тот, который я использовал.

public class MyContext : DbContext
{
    public DbSet<GLAccountCode> GLAccountCodes { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"{my connection string}");
        base.OnConfiguring(optionsBuilder);
    }

    public override int SaveChanges()
    {
        foreach (var entry in ChangeTracker.Entries<GLAccountCode>())
        {
            if (entry.State == EntityState.Modified || entry.State == EntityState.Added)
            {                 
                entry.Entity.Id = entry.Entity.Id.ToUpper();
            }
        }
        return base.SaveChanges();
    }
}

Обратите внимание на свойство DbSet, вам понадобится тот или иной код конфигурации в методе OnModelCreating.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...