首页 > 解决方案 > 如何删除孤立记录

问题描述

我正在尝试使用 GraphDiff 和实体框架来跨多个表更新一组记录。除了我需要删除任何可能已被替换的拥有实体的孤立记录外,一切正常。我缺少什么,因为我希望这种行为很常见,我只需要弄清楚如何适当地配置上下文或图形。这是我的示例代码:

        using (EfDataContext ctx = new EfDataContext())
        {
            try
            {
                ctx.Database.Log = msg => _sysLogObject.Debug(msg);

                ctx.UpdateGraph(assay, map => map
                    .OwnedCollection(p => p.Imagings, with => with
                        .OwnedEntity(p => p.ImagingCellType))
                    .OwnedEntity(p => p.DisplayTemplate)
                    .OwnedEntity(p => p.ExportTemplate)
                    .OwnedEntity(p => p.PrintTemplate)
                );
                ctx.SaveChanges();
                success = true;
            }
            catch (Exception ex)
            {
                _sysLogObject.Error(ex);
                throw;
            }
        }

标签: entity-frameworkgraphdiff

解决方案


免责声明:我是Entity Framework GraphDiff项目的所有者

我们也通过电子邮件收到了同样的问题。答案是:

子级必须具有朝向父级的导航属性才能使其工作。否则,实体框架中的 ChangeTracker 只会跳过实体。


推荐阅读