为了对所有实体删除执行某些操作,我试图像这样处理它:
mat
我需要在删除过程中根据实体集合属性计数处理一些实体集合,但它总是返回0,即使集合中有很多项目。
public override int SaveChanges()
{
var deletedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Deleted).ToList();
foreach (var deletedEntity in deletedEntities)
{
//((SampleEntity)deletedEntity.Entity).SuperCollection.Count();
}
return base.SaveChanges();
}
我知道为什么我的馆藏在这时总是0?
我的模型正确延迟加载编码如下,我的集合在SaveChanges()
之外运行良好((SampleEntity)deletedEntity.Entity).SuperCollection.Count();
祝你好运
答案 0 :(得分:0)
之前致电DetectChanges:
public override int SaveChanges()
{
ChangeTracker.DetectChanges();
//...
return base.SaveChanges();
}
否则,仅在base.SaveChanges()
方法中检测到更改。
EF将删除对已删除的entites的相关对象的所有引用。如果您需要保存此关系,可以将它们保存在本地字段中:
class UnitCompany
{
private SampleEntity _entity;
private SampleEntity _prevEntity;
publc SampleEntity Entity
{
get { return _entity; }
set
{
if (value != null)
{
_prevEntity = value;
}
_entity = value;
}
}
}
_prevEntity
会保持与相关对象的关联,您可以在SaveChanges