1
次のコードを使用して、trasaOriginalに割り当てられたすべてのKlientDoTrasaを削除し、コレクションに基づいて新しいKlientDoTrasaを作成して割り当てます:trasaToEdit.Klienci。私のテストケースでは、KlientDoTrasaと新しいKlientDoTrasaが同じであるので、EF4はデータベースにクエリを送信すべきではないと思っていますが、最初に削除してから挿入します。それを制限する方法はありますか?EF4がDBに送信するクエリの数を減らす方法は?
public void Edit(int trasaId, TrasaEditViewModel trasaToEdit)
{
Trasa trasaOriginal = _trasaRepository.FindById(trasaId);
trasaOriginal.Nazwa = trasaToEdit.Trasa.Nazwa;
foreach(KlientDoTrasa kdt in trasaOriginal.KlientDoTrasa.ToList())
{
_klientDoTrasaRepository.Remove(kdt);
}
for(int i = 0; i < trasaToEdit.Klienci.Count; i++)
{
var kdt = new KlientDoTrasa {Trasa = trasaOriginal, KlientId = trasaToEdit.Klienci[i].Id, Seq = i};
_klientDoTrasaRepository.Add(kdt);
}
_klientDoTrasaRepository.SaveChanges();
_trasaRepository.SaveChanges();
}