为什么当我将列表设置为新的 List(); 时,我的列表包含其原始项目<T>?



我有两个实体: WorkCategoryCertificate

工作类别有许多证书。

我有一种将证书保存到工作类别的方法:

    public void AddInductionCertificatesToWorkCategory(InductionWorkCategory workCategory, List<Certificate> certificates)
    {
        workCategory.Certificates = new List<Certificate>();
        foreach (var certificate in certificates)
        {
            var dbCertificate = _db.Certificates.Single(v => v.Id == certificate.Id);
            workCategory.Certificates.Add(dbCertificate);
        }
        _db.InductionWorkCategories.Attach(workCategory);
        _db.Entry(workCategory).State = EntityState.Modified;
        _db.SaveChanges();
    }

唯一的相关行是第一个:workCategory.Certificates = new List<Certificate>();执行此行时,workCategory.Certificates仍然具有其原始项目。

使这种情况发生的EF/动态代理是什么?

另外,如果我在该行上设置了一个断点并查看该集合,则可以工作。

编辑:我不是在寻找解决方案或解决方案,我很好奇封面下发生的事情。

欢呼

如果您露出对象context,则可以在语句上强制刷新。看起来像这样。

_DbContext.ObjectContext.Refresh(System.Data.Objects.RefreshMode.ClientWins, workCategory);

最新更新