2011-06-27 50 views
1
var entity = _db.Connections.Where(x => x.Id == Id).FirstOrDefault(); 

Connections在其中有另一個List<Messages>實體框架4.1無法從數據庫獲取記錄

如果它不止一次被調用,它不會從數據庫中返回List<Messages>。如果我調試代碼,如果我調用Take(_count).ToArray(),則會檢索到數據,但仍不會檢索到List<Messages>

所以我簡單的問題是我如何強制實體框架去從數據庫中獲取ACTUAL數據?

謝謝,任何提示的讚賞

public interface Connection 
{ 
    public int Id { get; set; } 
    public virtual List<Messages> Messages { get; set; } 
} 
+0

不知道我是否明白:你的對象'entity'是從DB加載的,但是這個對象中的collection屬性'list'是null,對吧?只有當您第二次查詢並且第一次運作時,您纔會遇到此問題?你使用延遲加載?如果你可以在裏面顯示'''''''''''''Connection'類,那麼可能會更容易理解。 – Slauma

+0

我編輯我的問題 – Stacker

+0

我正在做正常的一對多關係,問題是我第二次查詢來自連接對象的消息,消息不會從數據庫中檢索, – Stacker

回答

1

您需要將您的信息屬性更改爲

public virtual ICollection<Messages> { get; set; }

之前,從拉它時,回實體框架實際上會填充它數據庫。

+0

對於添加虛擬記錄實際上並沒有使它在從數據庫中拉回時填充它。虛擬關鍵字只是實現延遲加載(默認情況下在EF中)所必需的。只有在您對其進行調用並進行了其他查詢之後,該屬性纔會被填充。 – OpticalDelusion