0

我有一個使用實體框架C#應用程序6. 我查詢這樣的數據庫:實體框架 - Changetracker包含許多項目

public static DB.Core.DBBlob getBlob(DB.Core.DBAspect aspect, int index) 
    { 
     var blobs = aspect.DBBlobs.Where(b => b.Index == index); 
     return blobs.OrderByDescending(b => b.CreationTime).FirstOrDefault(); 
    } 

的問題是現在的changetracker包含2項 enter image description here

第一個項目是我從數據庫中查詢到的一個項目,第二個項目是我用where語句排除的項目(我只想要索引== 1的項目)。

看來EF6正在從數據庫加載兩個條目並添加到changetracker。

我試着已經設置如下設置:

dbm.Configuration.AutoDetectChangesEnabled = false; 
dbm.Configuration.LazyLoadingEnabled = false; 
dbm.Configuration.ProxyCreationEnabled = false; 

希望有人能夠幫助我。

+0

究竟是什麼問題?你害怕性能問題嗎?您確定,實體值是否已加載,或者在調試和訪問它們時可能是加載的? –

+0

問題是實體框架從數據庫加載數據並增加內存。表現也下降。 – user3107989

+0

你確定嗎?還是假設?如果像你說的那樣,這將是一個**巨大的問題,如果表格變大,EF根本無法使用。 –

回答

0

我找到了解決方案。 問題是實體框架正在加載所有「子」元素。 我現在所做的是直接查詢DbSet(採用數據庫模型),並在where語句中添加父項的Id。