不要在数据库中包含asp.net标识表

时间:2018-03-08 03:58:02

标签: sql-server asp.net-mvc entity-framework asp.net-identity ef-migrations

您好我已经在我的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"); 

2 个答案:

答案 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

Migrations under the hood