2017-10-17 78 views
1

我們在EF上遇到問題。 雖然延遲加載,有時導航屬性返回null。EF延遲加載返回null

注:我在DB中作出this.Configuration.LazyLoadingEnabled = true;

型號:

public class Student 
{ 
    public Int64 Id { get; set; } 
    public string Name { get; set; } 
    public string Gender { get; set; } 

    public Int64 Address_Id { get; set; } 

    [ForeignKey("Address_Id")] 
    public virtual Address Address { get; set; } 
} 

public class Address 
{ 
    public Int64 Id { get; set; } 
    public string Name { get; set; } 
} 

數據庫訪問:

Student oStudnet = context.Students.FirstOrDefault(); 
Int64 addressId= oStudnet.Address.Id 

「零異常」 的「oStudnet.Address。 ID「//地址在這裏爲空

+1

恐怕地址在這裏你的代碼過於簡單,並且這種情況被省略造成的實際原因。截至這裏發佈的代碼,這不應該發生(嗯,我敢肯定你認爲相同:))你能否提供更多的上下文?例如,也許你正在使用'.AsNoTracking()'擴展名,或者你寫的另一個助手隱藏了它。 –

+0

[記錄生成的SQL](https://stackoverflow.com/questions/1412863/how-do-i-view-the-sql-generated-by-the-entity-framework)並根據數據庫進行檢查。 –

回答

-1
Student oStudnet = context.Students.Include("Address").FirstOrDefault(); 

然後你就可以訪問

+0

感謝您的回答,未明白的**包括(Eager loading)**將解決。 我們有**延遲加載**的用例,我只附加了一個示例代碼。 –