实体框架6 - 代码优先。 我们有一段时间在我们的数据库上有他们的表的现有类。这些表格已包含我们无法删除的数据。现有表上的EF One to Zero或One关系导致数据库更新出错
我们尝试添加“一到零或一”它们之间的关系如下:
public class Session
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ForeignKey("User")]
public long Id { get; set; }
...
public virtual User User { get; set;}
}
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ForeignKey("Session")]
public long Id { get; set; }
...
public virtual Session Session { get; set;}
}
这是根据上面的变化所造成的迁移:
public partial class AddingSessionAndDialogOneToOneRelation : DbMigration
{
public override void Up()
{
CreateIndex("dbo.Users", "Id");
AddForeignKey("dbo.Users", "Id", "dbo.Sessions", "Id");
}
public override void Down()
{
DropForeignKey("dbo.Users", "Id", "dbo.Sessions");
DropIndex("dbo.Users", new[] { "Id" });
}
}
但当我们运行Update-Database命令,我们得到这个错误:
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.Users_dbo.Sessions_Id". The conflict occurred in database "SVC_AAA", table "dbo.Sessions", column 'Id'.
如果你有一个到零或一个关系,它不适用于外键... –
@AntoinePelletier然后我应该怎么做? – Jacob
你不能在两端都有'ForeignKey'属性,我猜''Session'在你的情况下是可选的,所以从'User' PK中去掉FK属性。 –