如果你的PostgreSQL數據庫不包含與ASP.NET身份的任何表,那麼它很可能意味着遷移不是爲ASP.NET身份上下文類啓用。就我而言,我使用VS腳手架和我的意思是這個類:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
所以,第一步是運行在包管理器控制檯Enable-Migrations
不帶參數。如果你有一個乾淨的數據庫,那麼它將在SO topic mentioned earlier中工作。所以,如果你想要一個簡單的解決方案,然後徹底銷燬你的PostgreSQL數據庫,再次創建它,只需運行Enable-Migrations
。
如果你不想破壞你的PostgreSQL數據庫和/或丟失任何遷移之前做那麼就能夠遷移它只爲單獨的目錄 ASP.NET身份背景。已經有一個SO answer解釋如何做到這一點。
爲ApplicationDbContext
啓用某些目錄遷移(如MigrationsIdentity
):
Enable-Migrations -ContextTypeName MyProject.Models.ApplicationDbContext -MigrationsDirectory MigrationsIdentity
添加初始遷移此背景:
Add-Migration IdentityInitial -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
應用此遷移:
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
這些後步驟將會在你的Po中有ASP.NET身份表通過Code First自動生成的stgreSQL數據庫生成,您不需要使用SQL腳本手動運行任何操作。
在你已經提到你有單獨的上下文的評論。然而,多種上下文方法存在缺點:you won't use them together easily。每次遷移數據庫時,還必須明確指定與-ConfigurationTypeName
標誌的上下文。我會像discussed already一樣使用單個上下文,但這取決於您的任務的要求。
版本:
請使用** clear問題語句**編寫問題標題,而不是與問題/問題 –
相關的工具您是否有從IdentityDbContext繼承的單個上下文或單獨的上下文?嘗試創建所有對象的主腳本以查看它產生的內容:'update-database -Script -SourceMigration:$ InitialDatabase'。 –
我有單獨的上下文,其中一個用於身份,另一個用於其他所有內容。這兩個上下文使用相同的連接字符串,我會嘗試你所說的。謝謝@Steve,標題改變了抱歉。 – VPerezQ