我有两个实体:WorkCategory
和Certificate
。
工作类别有很多证书。
我有一种将证书保存到工作类别的方法:
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 /动态代理是什么?
此外,如果我在该行上设置断点并查看该集合,则可以正常工作。
编辑:我不是在寻找解决方案或解决问题,我只是对在幕后发生的事情感到好奇。
干杯
答案 0 :(得分:0)
如果公开ObjectContext,则可以强制刷新语句。它看起来像这样。
_DbContext.ObjectContext.Refresh(System.Data.Objects.RefreshMode.ClientWins, workCategory);