我有一个非常简单的身份对象:
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”的对象。 无法创建约束或索引。
为什么第二次尝试生成外键?它不应该能够从初始迁移中看到现有的外键吗?
我能做些什么来解决这个问题吗?