如果你的PostgreSQL数据库不包含与ASP.NET身份的任何表,那么它很可能意味着迁移不是为ASP.NET身份上下文类启用。就我而言,我使用VS脚手架和我的意思是这个类:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
所以,第一步是运行在包管理器控制台Enable-Migrations
不带参数。如果你有一个干净的数据库,那么它将在SO topic mentioned earlier中工作。所以,如果你想要一个简单的解决方案,然后彻底销毁你的PostgreSQL数据库,再次创建它,只需运行Enable-Migrations
。
如果你不想破坏你的PostgreSQL数据库和/或丢失任何迁移之前做那么就能够迁移它只为单独的目录 ASP.NET身份背景。已经有一个SO answer解释如何做到这一点。
为ApplicationDbContext
启用某些目录迁移(如MigrationsIdentity
):
Enable-Migrations -ContextTypeName MyProject.Models.ApplicationDbContext -MigrationsDirectory MigrationsIdentity
添加初始迁移此背景:
Add-Migration IdentityInitial -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
应用此迁移:
Update-Database -ConfigurationTypeName MyProject.MigrationsIdentity.Configuration
这些后步骤将会在你的Po中有ASP.NET身份表通过Code First自动生成的stgreSQL数据库生成,您不需要使用SQL脚本手动运行任何操作。
在你已经提到你有单独的上下文的评论。然而,多种上下文方法存在缺点:you won't use them together easily。每次迁移数据库时,还必须明确指定与-ConfigurationTypeName
标志的上下文。我会像discussed already一样使用单个上下文,但这取决于您的任务的要求。
版本:
请使用** clear问题语句**编写问题标题,而不是与问题/问题 –
相关的工具您是否有从IdentityDbContext继承的单个上下文或单独的上下文?尝试创建所有对象的主脚本以查看它产生的内容:'update-database -Script -SourceMigration:$ InitialDatabase'。 –
我有单独的上下文,其中一个用于身份,另一个用于其他所有内容。这两个上下文使用相同的连接字符串,我会尝试你所说的。谢谢@Steve,标题改变了抱歉。 – VPerezQ