我有一個EF6數據庫優先應用程序,它使用從dbo架構生成到edmx的表。如何爲Code First DbContext動態地設置模式?
要更新某些相互配合使用的大型定價表,我需要在基於日期的新架構中創建新表,然後在事務中創建新表,將當前表移動到備份架構並移動新表到dbo模式。這是通過讀取edmx文件和更改模式創建的新的MetadataWorkspace實現的,並且允許我使用兩個DbContext來處理dbo模式中的現有數據,另一個使用新模式中的新表格。並且非常適合數據庫優先! See this SO article.
對於CodeFirst,可以設置modelBuilder.HasDefaultSchema在OnModelCreating,但隨後的DbContext被鎖定,並且OnModelCreating沒有新的DbContext實例再次調用,所以無論模式設置,現在正用於所有這些DbContexts申請期間。
我的問題是 - 我怎樣才能動態地改變CodeFirst的DbContext,我可以有兩個DbContext,每個使用不同的架構?由於模式名稱是動態的,我不能只定義兩個DbContext派生類。
THX但只能做一次,然後鎖定的DbContext和OnModelCreating不叫上不同的架構名稱的新實例。 – Dave