そのため、アプリケーションを構築するために Code First アプローチを使用していますが、データベースにエンティティを保存する際に小さな問題が発生しました。
ここに私のエンティティがあります:
public class Customer
{
public Customer()
{
Addresses = new List<Address>();
PhoneNumbers = new List<Phone>();
}
public Guid CustomerID { get; set;}
public virtual ICollection<Address> Addresses { get; set;}
public virtual ICollection<Phone> PhoneNumbers { get; set;}
public virtual Address MailingAddress {get; set;}
public virtual Phone DefaultPhone {get; set;}
}
ここで、Customer_CustomerID という名前の Address and Phone テーブルにエントリが作成され、Customer テーブルに DefaultPhone_PhoneID と MailingAddress_AddressID の両方の Guid のエントリが作成されます。
エンティティを保存するたびに、次のメッセージが表示されます。
"Inner Exception: Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.”
これらのエンティティが接続されている方法に関係しているように感じます。何か間違っていることや、私が見逃していることに気づきましたか?
エンティティは次のように保存されます。
public ActionResult CreateCustomer(Address address, Phone phone)
{
Customer cust = new Customer();
repository.Phone_Save(phone);
cust.PhoneNumbers.add(phone);
cust.DefaulPhone = phone;
repository.Address_Save(address);
cust.Addresses.add(address);
cust.MailingAddress = address;
repository.Customer_Save(cust);
}
public void Customer_Save(Customer customer);
{
Customer entity = context.Customers.Find(customer.CustomerID);
if (entity == null)
{
context.Customers.Add(customer);
entity = customer;
}
else
{
context.Entry(entity).CurrentValues.SetValues(customer);
}
context.SaveChanges();
context.Entry(entity).Reload();}