[英]Unable to configure AspNet.Identity using PostgreSQL
我有一個使用SQL Server設置的Web項目,現在必須遷移到PostgreSQL。 我正在使用Entity Framework 6.0版和最新版本的Microsoft.AspNet.Identity來管理用戶憑據。 我正在使用VS2015和.NET Framework 452。
除了AspNet.Identity之外,該項目適用於PostgreSQL服務器。 當我嘗試注冊新用戶或登錄時,我收到此問題中描述的相同錯誤消息。 相同的錯誤,相同的行,但問題是2年,給出的解決方案對我不起作用(我多次嘗試添加遷移和更新數據庫)。
其他一切作品,我已經檢查過我的PostgreSQL數據庫不包含該項目是使用SQL Server時,即使他們自動創建相關AspNet.Identity任何表。 其他與模型相關的表存在且有效。
謝謝。
我無法使Microsoft的AspNet.Identity與postgresql一起使用,它似乎被設計為與SQL Server一起使用,並且不管你做什么都不承認存在不同的數據上下文配置。
我現在一切都在外部圖書館的幫助下工作,所以如果有人遇到這個問題,我會提供一個問題的答案。
我按照以下項目中的說明(信用到vincechan):
第2步有點問題。 將項目導入我的解決方案后,我必須解決其中的參考問題。 在程序包管理器控制台中,您可以安裝缺少的程序包和/或更新過時的程序包。 我的最終配置需要使用:
准備好所有內容后,添加新遷移( Add-Migration <migration-name
)並更新數據庫( Update-Database
)。
現在執行創建與身份相關的表的SQL腳本,它們不會像使用SQL Server一樣自動創建 。 該腳本包含在項目中(文件PostgreSQLIdentity.sql
)。
現在一切都應該有效。 原諒這個答案的格式不佳。
如果PostgreSQL數據庫不包含任何與ASP.NET標識相關的表,則很可能意味着未對ASP.NET標識上下文類啟用遷移。 在我的情況下,我正在使用VS腳手架,我的意思是這個類:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
因此,第一步是在不帶參數的Package Manager控制台中運行Enable-Migrations
。 如果你有一個干凈的數據庫,它將完全按照前面提到的SO主題的工作方式工作。 因此,如果您想要一個簡單的解決方案,那么完全銷毀您的PostgreSQL數據庫,再次創建它並簡單地運行Enable-Migrations
。
如果您不想銷毀PostgreSQL數據庫或/並且在此之前丟失任何遷移,則僅在單獨的目錄中 為ASP.NET標識上下文啟用遷移。 已經有一個SO答案解釋了如何做到這一點。
在ApplicationDbContext
某個目錄(例如MigrationsIdentity
)中啟用遷移:
Enable-Migrations -ContextTypeName MyProject.Models.ApplicationDbContext -MigrationsDirectory MigrationsIdentity
為此上下文添加初始遷移:
Add-Migration IdentityInitial -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
應用此遷移:
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
完成這些步驟后,Code First會自動生成PostgreSQL數據庫中的ASP.NET標識表,您無需使用SQL腳本手動運行任何內容。
在評論中你提到過你有不同的背景。 然而,存在多種上下文方法的缺點: 您不會輕易地將它們一起使用 。 此外,每次遷移數據庫時都必須使用-ConfigurationTypeName
標志明確指定上下文。 我會使用已經討論過的單一上下文,但這取決於您的任務要求。
版本:
EntityFramework 6
Microsoft.AspNet.Identity.Core 2.1
Npgsql 3.1.10.0
EntityFramework6.Npgsql 3.1.1.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.