У меня проблема при использовании объектов самопроверки при компоновке WPF.
У меня есть две сущности, установленные для примера: Люди и Числа. У каждого человека есть много чисел, и у многих чисел может быть человек.
Вот пример кода, который я ожидаю удаления номера:
using (var db = new Model.SampleEntities())
{
list = db.People.Include("Numbers").ToList();
}
var samplePerson = list[0];
samplePerson.StartTracking();
var number = samplePerson.Numbers.First();
p.Numbers.Remove(number);
using (var db = new Model.SampleEntities())
{
foreach (Model.Person person in list)
{
db.People.ApplyChanges(person);
}
db.SaveChanges();
}
Не удаляет номер из БД.
Когда я изменяю класс TrackableCollection (который создается шаблонами Self-Tracking T4) путем переопределения метода RemoveItem и добавления следующего кода, он работает, как я ожидал:
protected override void RemoveItem(int index)
{
var entity = ((IObjectWithChangeTracker)this[index]);
base.RemoveItem(index);
entity.MarkAsDeleted();
}
Правильно ли я помещаю здесь метод MarkAsDeleted? Поэтому я должен изменить файл TT, чтобы поместить этот код в класс TrackableCollection. Это хороший подход?