C# 无法使用PostgreSQL配置AspNet.Identity
我有一个使用SQL Server设置的web项目,现在必须迁移到PostgreSQL。我正在使用实体框架6.0版和最新版本的Microsoft.AspNet.Identity来管理用户凭据。我正在使用VS2015和.NET Framework 452 除了AspNet.Identity之外,该项目可以与PostgreSQL server配合使用。当我尝试注册新用户或进行登录时,会收到与中所述相同的错误消息。相同的错误,相同的行,但问题已经存在2年了,给出的解决方案对我不起作用(我多次尝试添加迁移和更新数据库) 其他一切正常,我已经检查过,我的postgreSQL数据库不包含任何与AspNet.Identity相关的表,即使它们是在项目使用SQL Server时自动创建的。其他与模型相关的表已存在并正在运行C# 无法使用PostgreSQL配置AspNet.Identity,c#,.net,postgresql,entity-framework,asp.net-identity,C#,.net,Postgresql,Entity Framework,Asp.net Identity,我有一个使用SQL Server设置的web项目,现在必须迁移到PostgreSQL。我正在使用实体框架6.0版和最新版本的Microsoft.AspNet.Identity来管理用户凭据。我正在使用VS2015和.NET Framework 452 除了AspNet.Identity之外,该项目可以与PostgreSQL server配合使用。当我尝试注册新用户或进行登录时,会收到与中所述相同的错误消息。相同的错误,相同的行,但问题已经存在2年了,给出的解决方案对我不起作用(我多次尝试添加迁移
谢谢。我无法使Microsoft的AspNet.Identity与postgresql配合使用,它似乎是为与SQL Server配合使用而设计的,无论您做什么,它都不会确认存在不同的数据上下文配置 在外部图书馆的帮助下,我现在一切正常,所以我会为我的问题提供答案,以防其他人遇到这个问题 我遵循了以下项目中的说明(归功于vincechan):
- 我的主项目上的Npgsql 3.2.2(使用EntityFramework6.Npgsql)
- 下载项目上的Npgsql 2.2.7(使用Npgsql.EntityFramework)
一旦一切就绪,添加新的迁移(
add migration如果您的PostgreSQL数据库不包含任何与ASP.NET标识相关的表,则很可能意味着ASP.NET标识上下文类未启用迁移。在我的例子中,我使用的是VS scaffolding,我指的是此类:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
为此上下文添加初始迁移:
Add-Migration IdentityInitial -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
应用此迁移:
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
完成这些步骤后,PostgreSQL数据库中的ASP.NET标识表将首先由代码自动生成,无需使用SQL脚本手动运行任何内容
在您提到的注释中,您有单独的上下文。但是,多上下文方法有一个缺点:。此外,每次迁移数据库时,您必须使用-ConfigurationTypeName
标志显式指定上下文。我将按原样使用单个上下文,但这取决于您的需求任务
版本:
- 实体框架6
- Microsoft.AspNet.Identity.Core 2.1
- Npgsql 3.1.10.0
- EntityFramework6.Npgsql 3.1.1.0
请用清晰的问题陈述写一个问题标题,而不是与问题/问题相关的工具。您是否有从IdentityDbContext继承的单个上下文或单独的上下文?尝试创建所有对象的主脚本以查看其产生的结果:更新数据库-脚本-源迁移:$InitialDatabase
。I有单独的上下文,一个用于标识,另一个用于其他所有内容。两个上下文使用相同的连接字符串,我将尝试你所说的。谢谢@Steve,标题已更改。很抱歉。我说这可能会对你有所帮助。这是一个很好的解决方案。唯一的问题是如何在不迁移的情况下运行它。我发现发出命令**在project Nuget控制台窗口中删除迁移**,或在-Net Developer DOS命令窗口中删除**dotnet ef migrations Remove**帮助很大。顺便说一句,下面是一个示例连接字符串:“”标记SearchPath部分,您可以在其中指定要使用的架构
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration