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