Asp.net core 实体框架核心1.1 OnModelCreating方法未被调用

Asp.net core 实体框架核心1.1 OnModelCreating方法未被调用,asp.net-core,.net-core,entity-framework-core,asp.net-core-webapi,.net-standard,Asp.net Core,.net Core,Entity Framework Core,Asp.net Core Webapi,.net Standard,我在.Net标准1.4中创建了一个DBContext类,并在OnModelCreating方法中为实体配置编写了一些代码,但似乎没有调用此方法,而且我收到了一个关于列名的错误 这是我的班级: public partial class TestContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuil

我在.Net标准1.4中创建了一个DBContext类,并在OnModelCreating方法中为实体配置编写了一些代码,但似乎没有调用此方法,而且我收到了一个关于列名的错误

这是我的班级:

public partial class TestContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Data Source=blah");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TestTable>().HasKey(t => t.Id).HasName("TestTableId");
        modelBuilder.Entity<TestTable>().ToTable("TestTable");
    }

    public virtual DbSet<TestTable> TestTable { get; set; }
}

public class TestTable
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}
公共部分类TestContext:DbContext
{
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(@“Data Source=blah”);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(t=>t.Id).HasName(“TestTableId”);
modelBuilder.Entity().ToTable(“TestTable”);
}
公共虚拟数据库集测试表{get;set;}
}
公共类测试表
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
}
当我试图查询这个TestTable时,我得到一个错误,说
无效的列名“Id”

我在表中没有
Id
,我有
TestTableId
,我希望我得到的
OnModelCreating
代码能够处理映射


有什么想法吗?

您遇到的问题是您在这里命名的是键,而不是列:

modelBuilder.Entity<TestTable>()
    .HasKey(t => t.Id)
        .HasName("TestTableId");
modelBuilder.Entity<TestTable>()
    .Property(t => t.Id)
        .HasColumnName("TestTableId");