




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Linq編程查詢數(shù)據(jù)源上章回顧EF的簡介EF支持的開發(fā)模型模型的創(chuàng)建模型的構(gòu)成本章內(nèi)容Linq
ToEF單個(gè)實(shí)體的查詢關(guān)聯(lián)實(shí)體的查詢延遲加載、勤加載、顯式加載直接利用Sql語句進(jìn)行查詢Linq
To
EFDbContext管理對數(shù)據(jù)庫的連接:當(dāng)進(jìn)行增刪改查操作的時(shí)候,自動打開連接,當(dāng)操作完成的時(shí)候又自動關(guān)閉連接提供了對實(shí)體操作的一個(gè)起始點(diǎn),比如當(dāng)訪問DbSet類型的屬性,可以對此實(shí)體進(jìn)行相關(guān)的增刪改查操作。自動管理事務(wù)Linq
To
EFLinq表達(dá)式最短的查詢操作var
allbooks=
db.Books;foreach
(Book
b
in
allbooks){Console.WriteLine(b.Name);}Linq
To
EFLinq表達(dá)式var
query
=
from
b
in
db.Bookswhere
b.Price
>
20orderby
b.Price
descendingselect
b;Linq操作符形式var
result
=
db.Books.Where(b
=>
b.Price
>
20).OrderByDescending(b
=>
b.Price);Linq
To
EFIQueryable<T>接口–
運(yùn)行時(shí)會把表達(dá)式轉(zhuǎn)換為SQL語句Queryable類是一個(gè)靜態(tài)類,主要是IQueryable<T>的擴(kuò)展方法與Enumerable中的許多方法同名但運(yùn)行機(jī)制是不一樣的。Linq
To
EF小結(jié)一切以上下文對象的DbSet類型的屬性開始可以有Linq表達(dá)式與方法調(diào)用兩種形式許多的操作符來源于Queryable類運(yùn)行時(shí)轉(zhuǎn)換為SQL語句也有延遲執(zhí)行的機(jī)制Linq
To
Objects的許多操作模式,仍然適用單個(gè)實(shí)體的查詢Load是一個(gè)擴(kuò)展方法需要導(dǎo)入System.Data.Entity命名空間在DbExtensions類中using
(var
db
=
new
EFQueryEntities()){db.Books.Load();}單個(gè)實(shí)體的查詢Local屬性是DbSet的一個(gè)屬性,并且有以下幾個(gè)特點(diǎn)。不會導(dǎo)致DbContext去查詢數(shù)據(jù)庫只查詢目前被DbContext所管理的對象,并且不包括已標(biāo)記為刪除狀態(tài)的對象db.Books.Load();var
result
=
db.Books.Local;foreach
(var
item
in
result){Console.WriteLine(item.Name);}}單個(gè)實(shí)體的查詢EF框架產(chǎn)生的SQL語句的查看單個(gè)實(shí)體的查詢In查詢using
(var
db
=
new
EFQueryEntities()){int[]
conditions
=
new
int[]{
1,2,3};var
query
=
from
b
in
db.Books
where
conditions.Contains(b.ID)select
b;foreach(varitem
in
query){Console.WriteLine(item.Name);}}var
query
=
from
b
in
db.Books
where
conditions.Any(id=>id==b.ID)
select
b;不推薦單個(gè)實(shí)體的查詢依據(jù)主鍵來查詢using
(var
db
=
new
EFQueryEntities()){var
Book
=
db.Books.Find(1);Console.WriteLine(Book.Name);}var
SomeEntity=db.Entities.Find(1,”abc”);//聯(lián)合主鍵的情況Find的特點(diǎn)如果在上下文中能找到實(shí)體,那么不會去查數(shù)據(jù)庫Find方法進(jìn)行查找的時(shí)候也會包含添加(Added)狀態(tài)的實(shí)體。關(guān)于這個(gè)狀態(tài)在后續(xù)的章節(jié)中會有介紹單個(gè)實(shí)體的查詢小結(jié)Load與LocalInFindSql
Server
Profile的使用關(guān)聯(lián)實(shí)體查詢關(guān)聯(lián)實(shí)體查詢static
Book
GetBookByID(int
id){using
(var
db
=
new
EFQueryEntities()){returndb.Books.First();}}staticvoid
Main(string[]
args){Book
result=GetBookByID(1);Console.WriteLine("書籍的名字為:{0},類型為:{1}",result.Name,result.BookType.TypeName);Console.Read();}關(guān)聯(lián)實(shí)體查詢關(guān)聯(lián)實(shí)體查詢延遲加載(Lazy
Load):默認(rèn)行為勤加載(Eagerly
Load)顯式加載(Explicit
Load)關(guān)聯(lián)實(shí)體查詢延遲加載(Lazy
Load)using
(var
db
=
new
EFQueryEntities()){Book
result
=
db.Books.First();Console.WriteLine("書籍的名字為:{0},類型為:{1}",result.Name,result.BookType.TypeName);}思考:延遲加載的優(yōu)缺點(diǎn)是什么?db.Configuration.LazyLoadingEnabled=false;//關(guān)閉延遲加載的行為關(guān)聯(lián)實(shí)體查詢勤加載(Eagerly
Load)–
主要是靠Include來完成using
(var
db
=
new
EFQueryEntities()){var
query
=
from
b
in
db.Books.Include(b
=>
b.BookType)select
b;foreach(varitem
in
query){Console.WriteLine("書籍的名字為:{0},類型為:{1}",item.Name,item.BookType==null?"此書還沒有分類
":item.BookType.TypeName);}}關(guān)聯(lián)實(shí)體查詢顯式加載(Explicit
Load)–
主要是靠Reference與Collection方法結(jié)合Load方法來完成using
(var
db
=
new
EFQueryEntities()){db.Configuration.LazyLoadingEnabled
=
false;var
result=db.Books.First();db.Entry(result).Reference(b=>b.BookType).Load();Console.WriteLine("書籍的名字為:{0},類型為:{1}",result.Name,result.BookType.TypeName);}關(guān)聯(lián)實(shí)體查詢延遲加載是默認(rèn)的行為可以通過設(shè)置LazyLoadinEnable為false關(guān)掉此默認(rèn)行為勤加載主要依靠Include方法來完成顯示加載主要是靠Reference與Collection與Load的結(jié)合使用利用SQL查詢直接利用SQL進(jìn)行查詢,主要有兩種形式利用DbSet對象的SqlQuery利用Database對象的SqlQuery方法DbSet的SqlQuery的特點(diǎn)查詢的數(shù)據(jù)會自動轉(zhuǎn)換為實(shí)體書寫的SQL語句必須保證只返回當(dāng)前實(shí)體所需的數(shù)據(jù)。usi–ng查(va詢r(jià)
d出b=來n的ew數(shù)EF據(jù)Qu會er被yEn上tit下ies文())對象管理{通過var參re數(shù)su的lt=形db式.B解oo決ks.S了qlSQqule注ry入("s式ele漏ct
洞*
f的rom問b題oo。k"); foreach
(varb
in
result){Console.WriteLine(b.Name);}}利用SQL查詢int
total
=
db.Database.SqlQuery<int>("select
count(*)
from}Database的SqlQuery的特點(diǎn)–
查詢出來的任何結(jié)果都不會被上下文對象所管理public
class
BookPrice{using
(vpaurbdlibc
d=enceimwaElFTQopuPeriycEen{tigtieets;(s))et;
}{public
decimal
LowestPrice
{
get;
set;
}}boouksi"n).gFi(rvsatr()d;
b
=
new
EFQueryEntities())C{onsole.WriteLine(total);string
tsql=
"select
max(price)
as
TopPrice,min(price)
as
LowestPricefrombook";BookPrice
bookPrice
=
db.Database.SqlQuery<BookPrice>(tsql).First();Console.WriteLine("書籍的最高價(jià)格是{0},\t最低價(jià)格是{1}",bookPrice.TopPrice,bookPrice.LowestPrice);}本章小結(jié)Linq
To
EF單個(gè)實(shí)體的查詢關(guān)聯(lián)實(shí)體的查詢延遲加載、勤加載、顯式加載直
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度物流運(yùn)輸借款協(xié)議方合同
- 二零二五年度航空航天用高溫合金委托生產(chǎn)協(xié)議
- 二零二五年度智能共享單車無償使用合同范本
- 2025年度門診部護(hù)士長聘任與管理服務(wù)合同
- 職業(yè)插畫師插畫設(shè)計(jì)服務(wù)合同
- 房地產(chǎn)經(jīng)紀(jì)人獨(dú)家代理合同書
- 產(chǎn)品創(chuàng)意與策劃流程手冊
- 歷史文物保護(hù)與遺址發(fā)掘試題及答案
- 人工智能輔助的智能環(huán)境保護(hù)監(jiān)測系統(tǒng)開發(fā)協(xié)議
- 大健康產(chǎn)業(yè)數(shù)字化健康服務(wù)平臺建設(shè)
- 2024年湖南有色金屬職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 健身房帶小孩入場免責(zé)協(xié)議
- 2024年安徽醫(yī)學(xué)高等??茖W(xué)校單招職業(yè)適應(yīng)性測試題庫含答案
- 2023-2024學(xué)年人教版六年級下冊《負(fù)數(shù) 百分?jǐn)?shù)(二)》測試卷附答案解析
- 湖北省武漢市洪山區(qū)2024年七年級下學(xué)期期末數(shù)學(xué)試題附答案
- JT-T-957-2014潛水員培訓(xùn)與考核要求
- 中考英語不規(guī)則動詞變化表
- 農(nóng)村勞動力情況調(diào)查表(抽樣)
- (完整版)所羅門學(xué)習(xí)風(fēng)格量表
- 商會成立籌備方案
- 隧道橋過渡段結(jié)構(gòu)設(shè)計(jì)與分析
評論
0/150
提交評論