在将导航属性添加到现有关系时如何修复重复的foriegn键?

时间:2016-11-08 16:39:41

标签: vb.net entity-framework asp.net-mvc-5 ef-migrations navigation-properties

我有一个非常简单的身份对象:

Public Class UserRole
    Inherits IdentityUserRole(Of Integer)
End Class

默认情况下,这会生成以下迁移:

 CreateTable(
    "dbo.UserRoles",
    Function(c) New With
        {
            .UserId = c.Int(nullable := False),
            .RoleId = c.Int(nullable := False)
        }) _
    .PrimaryKey(Function(t) New With { t.UserId, t.RoleId }) _
    .ForeignKey("dbo.Users", Function(t) t.UserId) _
    .ForeignKey("dbo.Roles", Function(t) t.RoleId) _
    .Index(Function(t) t.UserId) _
    .Index(Function(t) t.RoleId)

Roles表中存在外键,但我没有为UserRole.Role定义导航属性,并且该对象上不存在一个。

当我尝试添加一个时:

Public Class UserRole
    Inherits IdentityUserRole(Of Integer)

    Public Overridable Property Role() as Role
End Class

这会生成以下迁移:

Public Overrides Sub Up()
    AddForeignKey("dbo.UserRoles", "RoleId", "dbo.Roles", "Id")
End Sub

然后该网站在尝试迁移时抛出错误:

  

System.Data.SqlClient.SqlException(0x80131904):数据库中已有一个名为“FK_dbo.UserRoles_dbo.Roles_RoleId”的对象。   无法创建约束或索引。

为什么第二次尝试生成外键?它不应该能够从初始迁移中看到现有的外键吗?

我能做些什么来解决这个问题吗?

0 个答案:

没有答案