Entity Framework Core 1.1 OnModelCreating 方法未被调用

Entity Framework Core 1.1 OnModelCreating method not getting called

我已经在 .Net Standard 1.4 中创建了一个 DBContext class 并且在 OnModelCreating 方法中有一些用于实体配置的代码,但是看起来这个方法没有被调用并且我收到了一个错误抱怨列名。

这是我的 class:

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

当我尝试查询此 TestTable 时,我收到一条错误消息 invalid column name "Id"

而且我在 table 中没有 Id,我有 TestTableId,我希望我得到的 OnModelCreating 代码会处理该映射。

有什么想法吗?

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

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

这将创建一个主键,然后将该键命名为 TestTableId。你应该做的是:

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