我有一个使用 SQL Server 设置的 Web 项目,现在必须将其迁移到 PostgreSQL。我使用实体框架版本 6.0 和最新版本的 Microsoft.AspNet.Identity 来管理用户凭据。我正在使用 VS2015 和 .NET Framework 452。
该项目可以与 PostgreSQL 服务器完美配合,除了 AspNet.Identity 之外。当我尝试注册新用户或登录时,我收到与中描述的相同的错误消息这个问题 https://stackoverflow.com/questions/30550410/ef6-postgres-relation-dbo-aspnetusers-does-not-exist。同样的错误,同一行,但问题已有 2 年历史了,给出的解决方案对我不起作用(我已多次尝试添加迁移和更新数据库)。
其他一切都正常,我已经检查过了,我的 postgreSQL 数据库也正常NOT包含与 AspNet.Identity 相关的任何表,即使它们是在项目使用 SQL Server 时自动创建的。其他与模型相关的表存在并且正在工作。
谢谢。
我无法使 Microsoft 的 AspNet.Identity 与 postgresql 一起使用,它似乎被设计为与 SQL Server 一起使用,并且无论您做什么,都不承认不同数据上下文配置的存在。
我现在在外部库的帮助下一切正常,所以我将提供我的问题的答案,以防其他人遇到这个问题。
我按照以下项目中的说明进行操作(归功于 vincechan):
- github.com 上的 PostgreSQL.AspNet.Identity.EntityFramework https://github.com/vincechan/PostgreSQL.AspNet.Identity.EntityFramework
Step 2有点问题。将项目导入我的解决方案后,我必须解决其中的参考问题。在包管理器控制台中,您可以安装缺少的包和/或更新过时的包。我的最终配置需要使用:
-
Npgsql 3.2.2在我的主要项目上(使用EntityFramework6.Npgsql)
-
Npgsql 2.2.7在下载的项目上(使用Npgsql.EntityFramework)
一切准备就绪后,添加新的迁移(Add-Migration <migration-name
)并更新您的数据库(Update-Database
).
现在执行创建 Identity 相关表的 SQL 脚本,它们将不会自动创建就像使用 SQL Server 一样。该脚本包含在项目中(文件PostgreSQLIdentity.sql
).
现在一切都应该正常了。请原谅这个答案的格式不佳。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)