Я использую следующий код для удаления всех KlientDoTrasa, назначенных trasaOriginal, а затем создаю и назначаю новый KlientDoTrasa на основе коллекции: trasaToEdit.Klienci. В моем тестовом примере назначенные KlientDoTrasa и новый KlientDoTrasa одинаковы, поэтому я подумал, что EF4 не должен отправлять какие-либо запросы в базу данных, но отправляет, сначала удаляет, а затем вставляет. Есть ли способ ограничить это?
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();
}