gpt4 book ai didi

c# - 在 EF Core 2 中使用单一表名

转载 作者:行者123 更新时间:2023-12-03 09:47:05 25 4
gpt4 key购买 nike

我希望我的域类名称与我的 db 表名称匹配(没有复数形式)。

在 EF Core 1.1 中,我使用以下代码来做到这一点:

public static void RemovePluralisingTableNameConvention(this ModelBuilder modelBuilder)
{
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
entityType.Relational().TableName = entityType.DisplayName();
}
}

在 EF Core 2.0 中,此代码不会编译为 Relational()不是 IMutableEntityType 上的方法。
无论如何,在 EF Core 2.0 中,他们添加了 IPluralizer,记录在此处:

https://github.com/aspnet/EntityFramework.Docs/blob/master/entity-framework/core/what-is-new/index.md#pluralization-hook-for-dbcontext-scaffolding

没有多少示例可以展示如何实现与我以前相同的行为。关于如何在 EF Core 2 中删除复数的任何线索?

最佳答案

您可以通过使用 ClrType.Name 在不使用内部 EF API 调用的情况下执行此操作。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
// Use the entity name instead of the Context.DbSet<T> name
// refs https://docs.microsoft.com/en-us/ef/core/modeling/entity-types?tabs=fluent-api#table-name
modelBuilder.Entity(entityType.ClrType).ToTable(entityType.ClrType.Name);
}
}

关于c# - 在 EF Core 2 中使用单一表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com