我們有一個使用現有遺留數據庫的ef項目,但使用ef-migrations向其添加新表。對於這些實體,我們使用新模式創建表,將它們與舊錶分開。我們在數據庫表中使用具有複數形式的類名稱的約定。 然而,當我們添加一個新的類來映射到一個遺留表(沒有複數表名)時,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仍然以類名取得表名。這張照片中缺少的是什麼?我使用ToTable
方法錯了嗎?
更新:當更改類名稱以外的其他名稱,它似乎工作。再次更改名稱時,問題已被廢棄。是否有EF緩存或隱藏的映射文件somwehere?
BTW:'ToTable'有一個2參數重載映射表和模式名稱:'config.ToTable(「Aktor」,「dbo」)'。但它可能與你的問題無關。 – Slauma