.net - EF Core 如何将表名称映射到实体名称,而不是 DbSet 名称?
问题描述
我看到 EF Core 中的 CodeFirst 从 DbContext 的 DbSet 名称生成表名称。
如果我有,DbSet<Person> People {get; set;}
我会得到People
as 的表名Person
,但是我希望它是Person
。
我试过这个解决方案,但它似乎不适用于核心......
之后我尝试了
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
modelBuilder.Entity(entity.Name)
.ToTable(entity.Name);
}
}
这更好,但它给了我带有命名空间的类的全名,有没有办法从中删除命名空间?
解决方案
使用DisplayName()
代替Name
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
modelBuilder.Entity(entity.Name)
.ToTable(entity.DisplayName());
}
}
推荐阅读
- javascript - 我会解释这个函数 .map ()
- java - 如何将 AWS KMS 与 java sdk 结合使用,以便能够将 IAM 凭证解析到 ECS 环境中?
- cognos - 突发 COGNOS 报告包括 CC 或 BCC 可能吗?
- android - 附近连接发现在 Android10 上引发错误 8036
- javascript - TypeError:无法读取nodejs中未定义的属性'ratingAvg'
- ios - AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 同一个队列
- javascript - 如何在没有 jQuery 的情况下调用 Bootstrap 模态函数?
- angular - 如何通过 RxJS 隔开我的 websocket 更新
- r - R中的度Bonacich权力中心性?
- regex - Ubuntu 18.04.3 LTS 上的 sed 正则表达式捕获组