Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用PostgreSQL配置AspNet.Identity_C#_.net_Postgresql_Entity Framework_Asp.net Identity - Fatal编程技术网

C# 无法使用PostgreSQL配置AspNet.Identity

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年了,给出的解决方案对我不起作用(我多次尝试添加迁移

我有一个使用SQL Server设置的web项目,现在必须迁移到PostgreSQL。我正在使用实体框架6.0版和最新版本的Microsoft.AspNet.Identity来管理用户凭据。我正在使用VS2015和.NET Framework 452

除了AspNet.Identity之外,该项目可以与PostgreSQL server配合使用。当我尝试注册新用户或进行登录时,会收到与中所述相同的错误消息。相同的错误,相同的行,但问题已经存在2年了,给出的解决方案对我不起作用(我多次尝试添加迁移和更新数据库)

其他一切正常,我已经检查过,我的postgreSQL数据库不包含任何与AspNet.Identity相关的表,即使它们是在项目使用SQL Server时自动创建的。其他与模型相关的表已存在并正在运行


谢谢。

我无法使Microsoft的AspNet.Identity与postgresql配合使用,它似乎是为与SQL Server配合使用而设计的,无论您做什么,它都不会确认存在不同的数据上下文配置

在外部图书馆的帮助下,我现在一切正常,所以我会为我的问题提供答案,以防其他人遇到这个问题

我遵循了以下项目中的说明(归功于vincechan):

步骤2有点问题。将项目导入我的解决方案后,我必须解决其中的引用问题。在软件包管理器控制台中,您可以安装丢失的软件包和/或更新过时的软件包。我的最终配置需要使用:

  • 我的主项目上的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