0
我有導航屬性CvssVector的Vulner實體。 LazyLoad已啓用。 CvssVector具有主鍵列VulnerId(不是標識)。從上下文中刪除所有對象後,導航屬性不起作用
var vulner = new Vulner { CvssVector == cvssVector};
context.Vulners.Add(vulner);
context.SaveChanges();
savedVulnerId = vulner.Id;
var entries = context.ObjectStateManager.GetObjectStateEntries(~EntityState.Detached).ToList();
entries.ForEach(e => e.ChangeState(EntityState.Detached)); // remove all entry states
後來針對同一方面,我要求保存vulner
var vulner = context.Vulners.First(v => v == savedVulnerId);
var fail = vulner.Cvss == null && ctx.CvssVectors.Any(x => x.VulnerId == vulner.Id);
你猜怎麼着? 失敗等於真! 唯一的問題是爲什麼?
據我瞭解,當我更改實體的狀態爲分離時,它將從上下文中刪除(不刪除表單數據庫,我不需要它)。無論如何,當我要求實體EF應該爲它分貝,特別是如果它無法在本地緩存中找到它。 EF返回Vulner但沒有CvssVector。 –