ef的關聯實體載入有三種方式:lazy loading,eager loading,explicit loading,其中lazy loading和explicit loading都是延遲載入。
(一)延遲載入(預設):lazy loading使用的是動態**,預設情況下,如果poco類滿足以下兩個條件,ef就使用lazy loading:
poco類是public且不為sealed。
導航屬性標記為virtual。
關閉lazy loading,可以將lazyloadingenabled設為false,如果導航屬性沒有標記為virtual,lazy loading也是不起作用的。
(二)貪婪載入:不設定導航屬性為virtual,並且對導航屬性使用include,eager loading使用include方法關聯預先載入的實體。
(三)顯示載入:不設定導航屬性為virtual,並且對導航屬性使用reference(單個物件).load()或collection(物件集).load()。explicit loading使用entry方法,對於集合使用collection,單個實體則使用reference。
publicclass
programm
//貪婪載入
//有多個include會全部完成載入,生成的sql命令是一條完成的
var res2 = db.reservations.include(r =>r.details);
//顯示載入
var res3 =db.reservations.tolist();
foreach (var item in
res3)}}
public
class
reservation
public
string clientname
public
string location
public listdetails
public customer customer
}public
class
reservationdetails
public datetime time
}public
class
customer
public
string name
}public
class
testdbcontext : dbcontext
}
暫時copy記錄,有空再整理
原文:
EF的三種資料載入方式
ef的關聯實體載入有三種方式 lazy loading,eager loading,explicit loading,其中lazy loading和explicit loading都是延遲載入。一 延遲載入 預設 lazy loading使用的是動態 預設情況下,如果poco類滿足以下兩個條件,ef...
EF 三種載入方式
ef資料載入三種方式 延遲載入 飢餓載入 顯示載入 ef中預設是開啟延遲載入 延遲載入 lazy loading 和 的商品列表一樣,下拉重新整理,按需載入。飢餓載入 eager loading 載入父物件時同時載入子物件。顯式載入 explicitly loading 當我們禁用了延遲載入,仍然可...
WPF ListView 的三種資料繫結方式
1.最原始的繫結方式 public observablecollectionobservableobj public mainwindow observableobj.add new observableobj.add new observableobj.add new observableobj....