我希望我的域名类名称与我的数据库表名称相匹配(无复数形式。)>
在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,记录在这里:
没有太多示例显示如何实现与以前相同的行为。关于如何消除EF Core 2中的多元性的任何线索?
我希望我的域名类名称与我的数据库表名称匹配(无复数形式)。在EF Core 1.1中,我使用以下代码执行此操作:public static void RemovePluralisingTableNameConvention(this ModelBuilder ...
您可以使用完全相同的代码。 Relational()
是在RelationalMetadataExtensions
assembly
您可以通过使用DbSet<TEntity>
而不使用内部EF API调用的方式进行此操作>
ClrType.Name
在EF Core 2中,您可以添加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);
}
}
。令人费解的是,如果您使用它在具有asp.net核心应用程序实体的库项目中生成类,则需要转到程序包管理器控制台,将库项目选择为默认项目,然后将这些钩子添加到mvc网站项目。如果将钩子添加到一个库中,它将不会发现该钩子。