簡體   English   中英

實體框架代碼優先忽略表映射

[英]Entity framework code-first ignores table mapping

我們有一個使用現有遺留數據庫的ef項目,但使用ef-migrations向其添加新表。 對於這些實體,我們使用新模式創建表,以將它們與舊表分開。 我們在db表上使用帶有復數形式的類名的約定。 但是,當我們添加一個要映射到舊表的新類(沒有多個表名)時,ef似乎忽略了映射。 實體類:

public class Aktor:IVersionedEntityWithId
{
    public int Id { get; set; }
    public string Navn { get; set; }
    public byte[] Version { get; set; }
}

映射代碼:

    protected virtual void MapAktor(EntityTypeConfiguration<Tilsyn.Domain.Aktor> config){
        config.ToTable("dbo.Aktor");
        config.Property(v=>v.Version).IsConcurrencyToken().IsRowVersion(); 
        config.HasKey(e=>e.Id); 
    }

例外:

System.Data.EntityCommandExecutionException:執行命令定義時發生錯誤。 有關詳細信息,請參閱內部異常 ---> System.Data.SqlClient.SqlException:無效的對象名稱'dbo.Aktors'。

似乎生成的sql仍然在類名中添加s來獲取表名。 這張照片中缺少什么? 我使用ToTable方法錯了嗎?

更新:將類名更改為表名以外的其他名稱時,似乎可以正常工作。 當再次更改名稱時,問題就出現了問題。 是否存在EF緩存或隱藏映射文件?

嘗試覆蓋DBContext子類中的OnModelCreating()方法以創建映射。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Tilsyn.Domain.Aktor>().ToTable("dbo.Aktor");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM