[英]LINQ query returning null for nested objects in Entity DB
我首先使用實體代碼創建了一個數據庫
在那個數據庫中,我有一個類似於以下的結構
class ClassA
{
public virtual int ID {get;set}
public virtual string some_text {get;set}
public virtual ClassB B {get;set}
public virtual ClassC C {get;set}
...
}
class ClassB
{
public virtual int ID {get;set}
public virtual string some_text {get;set}
public virtual string some_values {get;set}
...
}
class ClassC
{
public virtual int ID {get;set}
public virtual string some_text {get;set}
public virtual string some_values {get;set}
...
}
....
最后,我為那些具有所有接口的對象提供了一個上下文來查詢數據庫
public class ClassADb : DBContext, IClassADataSource
{
public DBSet<ClassA> As {get;set}
public DBSet<ClassB> Bs {get;set}
public DBSet<ClassC> Cs {get;set}
...
}
當我創建數據庫並探索它時,我可以看到它的創建似乎是正確的:
在 ClassA_Table 中,我看到 ClassB_ID、ClassC_ID 等的外鍵以及封裝在 ClassA 中的所有原始類型(整數、字符串、布爾值、日期等)
同樣在執行以下操作時:
ClassB MyB = new ClassB();
//some code to initialize B
...
Bs.Add(MyB)
ClassC MyC = new ClassC();
//some code to initialize C
Cs.Add(MyC);
ClassA MyA = new ClassA();
A.B = MyB;
A.C = MyC;
...
db.SaveChanges();
我遇到的問題是,當我從 As 容器中進行選擇時,我可以檢索 A 對象,但嵌套的 B 和 C 對象為空
原始類型正常(非空)
我嘗試過的一些修復
virtual
關鍵字是惰性的,所以在訪問數據庫的類的構造函數中我做了
db.Configuration.ProxyCreationEnabled = false;
但仍然在做一些事情時
A myA = db.As.Find(1);
A.some_text ; // not null
A.B ; //NULL!!!!
A.C ; // NULL
是什么導致實體框架不獲取 A 和 B 對象?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.