1
這裏後,實體框架內存泄漏是一個測試:分離新創建的對象
WeakReference ref1;
WeakReference ref2;
TestRepositoryEntitiesContainer context;
int i = 0;
using (context = GetContext<TestRepositoryEntitiesContainer>())
{
context.ObjectMaterialized += (o, s) => i++;
var item = context.SomeEntities.Where(e => e.SomePropertyToLookupOn == "some property").First();
context.Detach(item);
ref1 = new WeakReference(item);
var newItem = new SomeEntity {SomePropertyToLookupOn = "another value"};
context.SomeEntities.AddObject(newItem);
ref2 = new WeakReference(newItem);
context.SaveChanges();
context.SomeEntities.Detach(newItem);
newItem = null;
item = null;
}
context = null;
GC.Collect();
Assert.IsFalse(ref1.IsAlive);
Assert.IsFalse(ref2.IsAlive);
首先斷言通過,第二次失敗......我希望我失去了一些東西,它是晚...但看來,分離獲取的項目實際上會釋放該對象的所有句柄以使其被收集。但是,對於新的對象來說,某些東西會保持一個指針並且會產生內存泄漏。
NB - 這是EF 4.0
任何人之前看到過這個和解決它嗎?
感謝您的幫助!
湯姆