データベースを作成するためにコードファーストアプローチを使い始めたところです。私は次の3つのテーブルを持っています:
public partial class AccountHolder
{
public int AccountHolderId { get; set; }
public virtual List<Address> Address { get; set; }
}
public partial class Nominee
{
public int NomineeId { get; set; }
public virtual List<Address> Address { get; set; }
}
public partial class Address
{
public int AddressId { get; set; }
public int AccountHolderId { get; set; }
public AccountHolder AccountHolder { get; set; }
public int NomineeId { get; set; }
public Nominee Nominee { get; set; }
}
ここAccountHolder
とNominee
両方が1 to *
アドレスとの関係を持っています。私がこれに使用した流暢なAPIコードは次のとおりです。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Address>().HasRequired(p => p.AccountHolder)
.WithMany(p => p.Address)
.HasForeignKey(p => p.AccountHolderId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Address>().HasRequired(p => p.Nominee)
.WithMany(p => p.Address)
.HasForeignKey(p => p.NomineeId)
.WillCascadeOnDelete(false);
}
今私の問題は、AccountHolderまたはNomineeにデータを挿入しようとすると、この例外が発生することです。
AccountHolder挿入の場合
{"INSERTステートメントがFOREIGNKEY制約\"FK_dbo.Addresses_dbo.Nominees_NomineeId\"と競合しました。競合はデータベース\"CodeFirst.BankContext\ "、テーブル\" dbo.Nominees \ "、列'NomineeId'で発生しました。\r \nステートメントは終了しました。"}
ノミニー挿入の場合
{"INSERTステートメントがFOREIGNKEY制約\"FK_dbo.Addresses_dbo.AccountHolders_AccountHolderId\"と競合しました。競合はデータベース\"CodeFirst.BankContext\ "、テーブル\" dbo.AccountHolders \ "、列'AccountHolderId'で発生しました。\r \nステートメントは終了しました。"}
誰かがこの問題を解決する方法と私がここで欠けているものを教えてください?