Entity Framework Core 1.1 OnModelCreating方法未被調用

.net-core .net-standard asp.net-core asp.net-core-webapi entity-framework-core

我在.Net Standard 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; }
}

當我嘗試查詢此TestTable時,出現錯誤,指出invalid column name "Id"

我在表中沒有Id ,並且我有TestTableId ,我希望我得到的OnModelCreating代碼將處理該映射。

有任何想法嗎?

一般承認的答案

你遇到的問題是你在這裡命名密鑰而不是列:

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

這將創建一個主鍵,然後將該鍵TestTableId 。你應該做的是這樣的:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow