2

.NET標準1.4でDBContextクラスを作成し、エンティティ構成のコードをOnModelCreatingメソッドに作成しましたが、このメソッドが呼び出されずにいるようです列名についてエラーが発生しました。ここでエンティティフレームワークコア1.1 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コードがそのマッピングを担当することを期待していました。

すべてのアイデア?

答えて

2

あなたが持っている問題は、あなたがキーではなく、ここで列を命名していることである。

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

これは、主キー、キーTestTableId名を作成します。あなたがしなければならないのはこれです:

modelBuilder.Entity<TestTable>() 
    .Property(t => t.Id) 
     .HasColumnName("TestTableId"); 
関連する問題