實體框架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屬性。 –