У меня есть объект с именем BandyProfile
, и на моем уровне обслуживания я изменяю профиль и сохраняю.Сохранение объекта профиля не удаляет старые свойства из db в инфраструктуре сущности
public void SaveProfile(string userId, System.Collections.Specialized.NameValueCollection request)
{
BandyProfile bandyProfile = _bandyProfileRepository.Find(userId);
bandyProfile.CatchPhrase = request[0];
bandyProfile.StartedPracticing = Convert.ToInt16(request[1]);
bandyProfile.Education = request[2];
bandyProfile.Work = request[3];
bandyProfile.WhyIPractice = request[4];
bandyProfile.Inspirations = request[5];
bandyProfile.IsATeacher = Convert.ToBoolean(request[6]);
bandyProfile.TrainingCertification = request[7];
bandyProfile.YogaClasses = GetSelectedClasses(request[8]);
bandyProfile.StartedTeaching = Convert.ToInt16(request[9]);
bandyProfile.WhyITeach = request[10];
_bandyProfileRepository.Save();
}
YogaClasses
является ICollection
из YogaClass
public class YogaClass
{
public int YogaClassId { get; set; }
public YogaStyle YogaStyle { get; set;}
[Index]
[Required]
public string BandyProfileRefId { get; set; }
[ForeignKey("BandyProfileRefId")]
public virtual BandyProfile.BandyProfile BandyProfile { get; set; }
}
ПРОБЛЕМА - когда я добавить начальные yogaclasses и сохранить Я в порядке, но когда я изменить (удалить некоторые и добавить некоторые) yogaclasses и сохранить , все старые записи не удаляются из таблицы. Они остаются в базе данных, и новые записи записываются в новые строки.
ВОПРОС - Могу ли я удалить все старые записи «YogaClasses» для BandyProfile без прямого вызова таблицы YogaClass? Я подумал, что Entity Framework увидит, какие изменения были сделаны, и сделать волшебство под капотом!
_bandyProfileRepository.Save();
делает context.SaveChanges()