質問して解決策も得ましたが、解決策はここで言及している新しい問題を引き起こします。ここでコードを変更し、 と の間に新しい 1 対 1 の関係を作成しAccountHolder
ますNominee
。
public partial class AccountHolder
{
public int AccountHolderId { get; set; }
public virtual List<Address> Address { get; set; }
public virtual Nominee Nominee { 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; }
}
それらの関係は次のとおりです。
1 to many between AccountHolder and Address
1 to many between Nominee and Address
1 to 1 between AccountHolder and Nominee
このための流暢な Api コードは次のとおりです。
modelBuilder.Entity<AccountHolder>().HasOptional(p => p.Nominee)
.WithRequired()
.WillCascadeOnDelete(false);
modelBuilder.Entity<Address>().HasRequired(p => p.AccountHolder)
.WithMany(p => p.Address)
.HasForeignKey(p => p.AccountHolderId)
.WillCascadeOnDelete();
modelBuilder.Entity<Address>().HasRequired(p => p.Nominee)
.WithMany(p => p.Address)
.HasForeignKey(p => p.NomineeId)
.WillCascadeOnDelete();
まず、改善の余地がある場合は、私に提案してください。ここで私が直面している問題は、挿入するたびにAccountHolder
の空のインスタンスを作成する必要がNominee
あり、挿入中に の空のインスタンスNominee
を作成する必要があることですAccountHolder
。そして、私がこれをしないと、前の質問で述べたエラーが発生しました。この問題を解決する方法を教えてください。ソリューションにサンプルコードを追加してください。
データの挿入に使用しているコードは次のとおりです。
var accountHolder = new AccountHolder() {
AccountHolderId = 901,
Address = new List<Address>()
{
new Address()
{
HouseNumber = hnumber,
Street = street,
Nominee = new Nominee() //this is the issue
}
},
Nominee = new Nominee()
{
Address = new List<Address>()
{
new Address()
{
HouseNumber = n_hnumber,
Street = n_street,
AccountHolder = new AccountHolder() //this is the issue
}
}
}
};
ありがとう!