Datagrid をナビゲーション プロパティにバインドしたい。
たとえば、Client_ID でリンクされた 2 つのエンティティ クライアントと電話があるとします。
ユーザーが電話の詳細を編集しても問題ありません。変更は正しく保存されます
ユーザーが新しい電話を追加して保存すると、新しい行が保存されないという問題が発生します。また、ユーザーが新しいクライアントを追加する場合。クライアント データは保存されますが、すべての電話は保存されませんか? 手伝ってくれてありがとう
Datagrid をナビゲーション プロパティにバインドしたい。
たとえば、Client_ID でリンクされた 2 つのエンティティ クライアントと電話があるとします。
ユーザーが電話の詳細を編集しても問題ありません。変更は正しく保存されます
ユーザーが新しい電話を追加して保存すると、新しい行が保存されないという問題が発生します。また、ユーザーが新しいクライアントを追加する場合。クライアント データは保存されますが、すべての電話は保存されませんか? 手伝ってくれてありがとう
これは、Phone にプロパティ Client があるためである可能性があります。Phone を追加すると、このプロパティは null になるため、その Client プロパティを現在のクライアントに設定するか、より正確には、id が Phone FK にあるクライアントに設定する必要があります。これが役立つことを願っています。
public void SaveClient(Client client)
{
client.PhoneNumbers.ToList().ForEach(pn=>pn.Client=client);
using(var context=new MyContext())
{
context.Clients.Add(client);
context.SaveChanges();
}
}
private void Save_Button_Click(object sender, RoutedEventArgs e)
{
Client1.PhoneNumbers.ToList().ForEach(pn => pn.Client = Client1);
Client1.OtherNavigationProperties = null;
using(var context=new MyContext())
{
if (insert)
context.Client.Add(Client1);
if (update)
{
var client = context.GetClientsByClientID(Client1.ID);
client.PhoneNumbers = Client1.PhoneNumbers;
//other changes if any in client
//again set all navigation properties null else than PhoneNumbers
}
context.SaveChanges();
}
}
これを試してみてください