Следующий код загружает концерт, очищает коллекцию актов и добавляет новый акт.
Data.LinqToSQL.Gig dbGig = DBContext.Gigs.Where(x => x.ID == myGigID).SingleOrDefault();
//Remove all references to the current acts
if(dbGig.Acts!=null) {
DBContext.Acts.DeleteAllOnSubmit(dbGig.Acts);
}
Data.LinqToSQL.Act dbAct = new ListenTo.Data.LinqToSQL.Act();
dbAct.ID = Guid.NewGuid();
DBContext.Acts.InsertOnSubmit(dbAct);
DBContext.SubmitChanges();
Обратите внимание, что каждый раз, когда я запускаю этот код, значение myGigID одно и то же, поэтому он всегда один и тот же, который я загружаю.
При первом запуске этого кода он работает нормально, и у меня концерт с 1 актом.
Во второй раз dbGig.Acts (коллекция) имеет счетчик 0, поэтому DeleteAllOnSubmit не удаляет какие-либо действия. Однако в базе данных есть 1 акт на этот концерт! Поэтому после выполнения этого кода я получаю 2 действия.
Если я запускаю его в третий раз, я получаю всего 3 действия.
Есть идеи, что я делаю не так?