无法使用PostgreSQL配置AspNet.Identity

By simon at 2018-02-07 • 0人收藏 • 54人看过

我有一个使用SQL Server设置的Web项目,现在必须是 迁移到PostgreSQL。我正在使用实体框架版本6.0与最新 用于管理用户凭据的Microsoft.AspNet.Identity版本。我在用着 VS2015和.NET Framework452。 对于除PostgreSQL服务器以外的所有项目,该项目都可以正常工作 AspNet.Identity。当我尝试注册一个新用户或做一个登录我得到的 中描述的同样的错误信息 问题(https://stackoverflow.com/questions/30550410/ef6-postGRES-relation- DBO-aspnetusers - 不 - 不存在)。同样的错误,同一行,但问题是2 岁,并给出解决方案d不适合我(我已经尝试了Add- 迁移和更新数据库多次)。 一切工作,我已经检查和米ŸpostgreSQL数据库不** 包含与AspNet.Identity相关的任何表,即使它们是创建的 自动的该项目正在使用SQL Server。其他型号相关 桌子是存在和工作。 谢谢。

3 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

我无法使微软的AspNet.dentdent与postgresql合作 似乎被设计为与SQL Server一起工作不承认 无论您做什么,都会出现不同的数据上下文配置。 我现在一切正常工作借助外部图书馆,我会的 如果有人遇到这个问题,请提供我的问题的答案。 我foll欠下列项目中的指示(贷记给...) vincechan):   * [PostgreSQL.AspNet.Identity.EntityFramework上github.com](https://github.com/vincechan/PostgreSQL.AspNet.Identity.EntityFramework) 步骤2 *有点问题。在IM之后将项目移植到我的解决方案中 我必须解决其中的参考问题。在包管理器控制台中 可以安装缺少软件包和/或更新那些过时的软件包。我的 需要使用的最终配置:    Npgsql 3.2.2在我的主项目(使用EntityFramework6.Npgsql)   * Npgsql 2.2.7下载的项目(使用Npgsql.EntityFramework) 一旦你准备好了一切,添加一个新的迁移(Add-Migration <migration-name)并更新 你的数据库(Update-Database)。 现在执行SQL scri创建身份相关的表,他们会 **不会像SQL Server那样自动创建。脚本是 一世包含在项目中(文件PostgreSQLIdentity.sql)。 一切都应该现在工作。原谅这个答案糟糕的格式。

2018-02-07   #2

我无法使微软的AspNet.dentdent与postgresql合作 似乎被设计为与SQL Server一起工作不承认 无论您做什么,都会出现不同的数据上下文配置。 我现在一切正常工作借助外部图书馆,我会的 如果有人遇到这个问题,请提供我的问题的答案。 我foll欠下列项目中的指示(贷记给...) vincechan):   * [PostgreSQL.AspNet.Identity.EntityFramework上github.com](https://github.com/vincechan/PostgreSQL.AspNet.Identity.EntityFramework) 步骤2 *有点问题。在IM之后将项目移植到我的解决方案中 我必须解决其中的参考问题。在包管理器控制台中 可以安装缺少软件包和/或更新那些过时的软件包。我的 需要使用的最终配置:    Npgsql 3.2.2在我的主项目(使用EntityFramework6.Npgsql)   * Npgsql 2.2.7下载的项目(使用Npgsql.EntityFramework) 一旦你准备好了一切,添加一个新的迁移(Add-Migration <migration-name)并更新 你的数据库(Update-Database)。 现在执行SQL scri创建身份相关的表,他们会 **不会像SQL Server那样自动创建。脚本是 一世包含在项目中(文件PostgreSQLIdentity.sql)。 一切都应该现在工作。原谅这个答案糟糕的格式。

2018-02-07   #3

如果PostgreSQL数据库不包含任何与ASP.NET相关的表 身份,那么它很可能意味着迁移are未启用 ASP.NET身份上下文类。在我的情况下,我使用VS脚手架和我 这个班意味着:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
那么,第一步是在Package Manager Console中运行Enable-Migrations 参数。如果你有一个干净的数据库,那么它会工作K究竟如何呢 在[SO主题中提到过 早期(https://stackoverflow.com/questions/30550410/ef6-postgres-relation-DBO-aspnetusers - 不 - 不存在)。所以如果你想要一个简单的解决方案,然后销毁 你的PostgreSQL数据库完全,创建它艾因,只是运行 Enable-Migrations。 如果你不想破坏你的PostgreSQL数据库或者丢失任何东西 在t之前完成迁移只是启用迁移只适用于ASP.NET身份 上下文单独的目录中。已经有一个[SO 答案](HTtps://stackoverflow.com/a/21538091/8356436)解释如何做 这个。 在某个目录中启用迁移(例如MigrationsIdentity)对于ApplicationDbContext:
Enable-Migrations -ContextTypeName MyProject.Models.ApplicationDbContext -MigrationsDirectory MigrationsIdentity
为此上下文添加初始迁移:
Add-Migration IdentityInitial -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
应用此迁移:
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
在t之后这些步骤将在您的PostgreSQL中有ASP.NET身份表 数据库由Code First 自动生成,你不用不需要跑步 任何手动与SQL脚本。 在你提到的评论中你有单独的上下文。不过,Ë 是多种情况下的缺点:[你不会一起使用它们 容易](https://stackoverflow.com/questions/30608266 /实体框架 - 关系之间,不同-的DbContext,和不同的图式)。也是你 将不得不指定explicitl每隔-ConfigurationTypeName标志的上下文 当你迁移你的数据库。我会使用单一的上下文[讨论 alreadY](https://stackoverflow.com/questions/19902756/asp-net-identity- dbcontext-confusion),但这取决于哟的要求你的任务。 版本:   * EntityFramework 6   * Microsoft.AspNet.Identity.Core 2.1   * Npgsql 3.1.10.0   * EntityFramework6.Npgsql3.1.1.0

登录后方可回帖

Loading...