entity-framework-4 - 从集合中移除()不会将对象标记为已删除 - EF4

标签 entity-framework-4 removechild

我正在使用 POCO 生成的类 - 我可以以任何方式调整模板,以便当我从子集合中删除时,删除的项目也会从 db 中删除?

或者也许在部分类中我可以覆盖一些东西,捕捉一个事件..?

基本上我想要 Order.OrderDetails.Remove(orderDetail) 从数据库中删除 orderDetail。

我愿意 不是 想要访问上下文并执行 context.OrderDetails.Delete(orderDetail)。

最佳答案

当您从集合导航属性中删除对象时, Entity Framework 会删除对象之间的关系(将引用其父项的子对象上的属性归零)。

如果要删除记录,需要将该对象标记为State = EntityState.Deleted。您可以通过访问上下文来做到这一点,或者如果您不想,解决方法是识别在 ChangeTracker 中被孤立的子对象,并将它们的状态设置为已删除。

var orphans = context.ChangeTracker.Entries().Where(e => e.State == EntityState.Modified && typeof(e.Entity) is ChildType);
foreach (DbEntityEntry orphan in orphans)
{
    orphan.State = EntityState.Deleted;
}

关于entity-framework-4 - 从集合中移除()不会将对象标记为已删除 - EF4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051024/

相关文章:

C#如何从列表中删除特定节点

javascript - 使用 Javascript 删除 DOM 元素

entity-framework-4 - 在多个项目中共享相同的(.edmx 模型)

entity-framework-4 - Entity Framework 代码优先 - 将具有另一个类的 List<> 的类映射到多个表?

entity-framework - EF 4.0 POCO 魔术不起作用——未检测到任何更改

c# - 处理 EF 中循环引用的干净方法?

C# 4.0/EF - SQL Server Compact 不支持服务器生成的键和服务器生成的值

javascript - 从id中删除表内容

ios - FireBase - Observer Remove Child at specific path 没有被调用

javascript - 使用javascript从html表中删除元素