entity-framework - 如何将实体框架自定义字符串主键的 Id 大写
问题描述
使用 C# 和 Entity Framework Core
我创建了一个 Id 类型为字符串的实体。我希望该 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
方法中的其他一些配置代码。
推荐阅读
- php - file_get_contents 突然返回 false
- bash - 如何在 Bash 中减去这两个列表
- excel - VBA:如何使用变量作为范围内的参数?
- ios - Cocoapods 共享依赖
- actions-on-google - 如何在 New Actions Builder 中实施测验
- javascript - 从 esp javascript 获取时出现 CORS 错误
- mongodb - 如何在当前日期字段中添加天数以便能够比较日期范围
- cookies - 凤凰饼干解密
- reactjs - 使用 React-js 显示 3d 模型格式 gltf
- javascript - 如何映射/过滤和匹配数组中的字符串