[英]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.