Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 配置实体时获取表名_C#_.net_.net Core_Entity Framework Core_Ef Core 5.0 - Fatal编程技术网

C# 配置实体时获取表名

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);

EF Core:我需要将表的名称作为实体的名称,而不是dbset,而且我需要
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();