Entity Framework 6 - コードファースト。 しばらくの間、データベースにテーブルを持つ既存のクラスがあります。これらのテーブルにはすでに削除できないデータが含まれています。EF 1〜0または1の関係が既存のテーブルでデータベース更新時にエラーになる
我々は次のようにそれらの間の「1にゼロまたは-1」の関係を追加しよう:これは上記の変更に応じて作成された移行である
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'.
0から1つの関係がある場合、それは外部キーでは機能しません。 –
@AntoinePelletierどうすればいいですか? – Jacob
あなたは 'ForeignKey'属性を両端に持つことはできません。' Session'はあなたの場合はオプションであると思いますので、 'User' PKからFK属性を削除してください。 –