在 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();
}
它不会从数据库中删除号码。
当我通过重写 RemoveItem 方法更改 TrackableCollection 类(由 Self-Tracking T4 模板生成)并添加以下代码时,它按预期工作:
protected override void RemoveItem(int index)
{
var entity = ((IObjectWithChangeTracker)this[index]);
base.RemoveItem(index);
entity.MarkAsDeleted();
}
我把 MarkAsDeleted 方法放在这里是否正确?所以我应该更改 TT 文件以将此代码放入 TrackableCollection 类中。这是一个好方法吗?