您好我已经在我的asp.net mvc项目中使用代码启用了自动迁移:Enable-Migrations –EnableAutomaticMigrations
。
我不希望在我的.net应用程序中默认创建身份表(用户,角色,用户角色等)。如何防止它们被创建?
我尝试从Sql server Management Studio中删除数据库并使用update-database -force重新创建我的数据库,但表仍然存在。
更新
我创建了一个删除表的迁移,但我不想像这样解决我的问题
DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers");
DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers");
DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers");
DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles");
DropIndex("dbo.AspNetUserLogins", new[] { "UserId" });
DropIndex("dbo.AspNetUserClaims", new[] { "UserId" });
DropIndex("dbo.AspNetUsers", "UserNameIndex");
DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" });
DropIndex("dbo.AspNetUserRoles", new[] { "UserId" });
DropIndex("dbo.AspNetRoles", "RoleNameIndex");
DropTable("dbo.AspNetUserLogins");
DropTable("dbo.AspNetUserClaims");
DropTable("dbo.AspNetUsers");
DropTable("dbo.AspNetUserRoles");
DropTable("dbo.AspNetRoles");
答案 0 :(得分:2)
您的ApplicationDbContext
可能继承自IdentityDbContext
,您必须将其更改为继承自DbContext
。
更改此
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
}
到这个
public class ApplicationDbContext : DbContext
{
}
答案 1 :(得分:1)
不确定你的目标是什么(没有身份,像Kahbazi建议的单独的身份上下文等等)但是,因为你说它不想要默认创建的表,而你刚刚启用了迁移,那么你可能只需要创建一个初始的基线迁移,它可以获取当前数据库的快照,但不包含任何代码。然后,您的下一次迁移将只是您添加或更改的内容:
enable-migrations
add-migration MyInitialBaseline -IgnoreChanges
update-database
-IgnoreChanges
告诉EF只做模型快照而不是重新创建现有对象。如果没有这个初始迁移,EF会将您的第一次迁移与空模型进行比较,并重新创建包括Identity表在内的所有内容。现在,您可以使用模型并根据需要生成后续迁移:
add-migration AddFoo
update-database