如何将实体框架自定义字符串主键的Id大写。

问题描述 投票:0回答:1

使用C#和Entity Framework Core

我创建了一个实体,其Id类型为string.我想在实体本身中强制将Id大写。

我如何才能做到这一点?

我发现这段代码可以添加到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();
}
entity-framework entity-framework-core
1个回答
0
投票

你那里的代码肯定是有效的。 我已经测试过了。 所以也许问题出在你的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 方法。

© www.soinside.com 2019 - 2024. All rights reserved.