C# 配置实体时获取表名
EF Core:我需要将表的名称作为实体的名称,而不是dbset,而且我需要C# 配置实体时获取表名,c#,.net,.net-core,entity-framework-core,ef-core-5.0,C#,.net,.net Core,Entity Framework Core,Ef Core 5.0,EF Core:我需要将表的名称作为实体的名称,而不是dbset,而且我需要Id为“tableName”+“Id” 我有一个DbSet Countries-我需要将表名Country和Id列(从基本实体继承)设置为CountryId 我从以下代码开始: foreach (var entity in modelBuilder.Model.GetEntityTypes()) { var builderEntity = modelBuilder.Entity(entity.Name);
Id
为“tableName”+“Id”
我有一个DbSet Countries
-我需要将表名Country
和Id
列(从基本实体继承)设置为CountryId
我从以下代码开始:
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
var builderEntity = modelBuilder.Entity(entity.Name);
// make table name to be entity name
builderEntity.ToTable(entity.DisplayName());
// make Id column name to be tableName+Id
var idProperty = entity.FindProperty("Id");
if (idProperty != null)
{
builderEntity.Property("Id")
.HasColumnName(entity.GetTableName() + "Id");
}
}
但现在我切换到个人配置
我有以下资料:
public class IdEntityConfiguration<TEntity> : BaseEntityConfiguration<TEntity>
where TEntity : IdEntity
{
public override void Configure(EntityTypeBuilder<TEntity> builder)
{
base.Configure(builder);
// would be better to have the entity TableName, not the Entity name
// if one day would not be the same...
var tableName = typeof(TEntity).Name;
builder.Property(p => p.Id)
.HasColumnName(tableName + "Id");
}
}
public class BaseEntityConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : BaseEntity
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
var entityName = typeof(TEntity).Name; // here is OK, generic class name
builder.ToTable(entityName);
}
}
如何在上面的代码中获取配置的表名(而不是实体名)
var tn = builder.Metadata.GetTableName();