ITjob NET視頻教程之C教材linqtosql_第1頁
ITjob NET視頻教程之C教材linqtosql_第2頁
ITjob NET視頻教程之C教材linqtosql_第3頁
ITjob NET視頻教程之C教材linqtosql_第4頁
ITjob NET視頻教程之C教材linqtosql_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

LINQToSQL本課內(nèi)容使用LINQtoSQL和VisualStudio2021LINQtoSQL對象如何映射到數(shù)據(jù)庫實體上建立LINQtoSQL操作,但不使用O/R設(shè)計器用LINQ查詢SQLServer數(shù)據(jù)庫存儲過程和LINQtoSQL演示利用設(shè)計器建立LINQtoSQL類:1、建立一個DOS控制臺2、建立一個LINQtoSQL類3、通過O/R設(shè)計器創(chuàng)立Northwind的Products這樣我們就創(chuàng)立了一個強類型的ORM數(shù)據(jù)庫的對象與集合,下面我們就可以采用如下的方法輸出內(nèi)容:NorthwindDataContextdc=newNorthwindDataContext();varquery=dc.Products;foreach(Productsiteminquery){Console.WriteLine("{0}|{1}|{2}",item.ProductID,item.ProductName,item.UnitsInStock);}使用LINQtoSQL和VisualStudio2021以下圖演示了數(shù)據(jù)庫對象與LINQ對象之間的ORM關(guān)系:對象映射到LINQ對象上數(shù)據(jù)庫對象LINQ對象數(shù)據(jù)庫DataContext表類和集合視圖類和集合列屬性關(guān)系嵌套的集合存儲過程方法 DataContext類型〔數(shù)據(jù)上下文〕是命名空間下的重要類型,用于把查詢句法翻譯成SQL語句,以及把數(shù)據(jù)從數(shù)據(jù)庫返回給調(diào)用方和把實體的修改寫入數(shù)據(jù)庫。 DataContext提供了以下一些使用的功能:以日志形式記錄DataContext生成的SQL執(zhí)行SQL〔包括查詢和更新語句〕創(chuàng)立和刪除數(shù)據(jù)庫DataContext是實體和數(shù)據(jù)庫之間的橋梁,那么首先我們需要定義映射到數(shù)據(jù)表的實體。對象映射到LINQ對象上-DataContext對象以Northwind數(shù)據(jù)庫為例,上述Customers類被映射成一個表,對應(yīng)數(shù)據(jù)庫中的Customers表。然后在類型中定義了三個屬性,對應(yīng)表中的三個字段。其中,CustomerID字段是主鍵,如果沒有指定Column特性的Name屬性,那么系統(tǒng)會把屬性名作為數(shù)據(jù)表的字段名,也就是說實體類的屬性名就需要和數(shù)據(jù)表中的字段名一致。備注:對象映射到LINQ對象上-DataContext對象創(chuàng)立一個ASP.NET頁面,然后在頁面上參加一個GridView控件,使用下面的代碼進行綁定數(shù)據(jù):引用命名空間using;

DataContextctx=newDataContext("server=xxx;database=Northwind;uid=xxx;pwd=xxx");Table<Customer>Customers=ctx.GetTable<Customer>();GridView1.DataSource=fromcinCustomerswherec.CustomerID.StartsWith("A")selectnew{顧客ID=c.CustomerID,顧客名=c.Name,城市=c.City};GridView1.DataBind();對象映射到LINQ對象上-DataContext對象強類型DataContextpublicpartialclassNorthwindDataContext:DataContext{publicTable<Customer>Customers;publicNorthwindDataContext(IDbConnectionconnection):base(connection){}publicNorthwindDataContext(stringconnection):base(connection){}}對象映射到LINQ對象上-DataContext對象強類型數(shù)據(jù)上下文使代碼更簡潔:NorthwindDataContextctx=newNorthwindDataContext("server=xxx;database=Northwind;uid=xxx;pwd=xxx");GridView1.DataSource=fromcinctx.Customerswherec.CustomerID.StartsWith("A")selectnew{顧客ID=c.CustomerID,顧客名=c.Name,城市=c.City};GridView1.DataBind();

對象映射到LINQ對象上-DataContext對象DataContext其實封裝了很多實用的功能,下面一一介紹。日志功能探究查詢執(zhí)行查詢對象映射到LINQ對象上-DataContext對象1、使用ExecuteQuery方法NorthwindDataContextdc=newNorthwindDataContext();IEnumerable<Products>myProducts=dc.ExecuteQuery<Products>("SELECT*FROMPRODUCTS","");foreach(ProductsiteminmyProducts){Console.WriteLine(item.ProductID+"|"+item.ProductName);}對象映射到LINQ對象上-DataContext對象2、使用Connection屬性使用Connection屬性可以返回一個DBConnection實例:Console.WriteLine(dc.Connection.ConnectionString);對象映射到LINQ對象上-DataContext對象3、使用Transaction屬性Table<T>提供了InsertOnSubmit插入一個對象通過DataContext的SubmitChanges方法提交整個事務(wù)回滾那么是一個自動的行為注意:InsertOnSubmit是一個帶有事務(wù)處理的插入方式。見備注中的代碼對象映射到LINQ對象上-DataContext對象4、DataContext對象的其他方法如下:對象映射到LINQ對象上-DataContext對象方法說明CreateDatabase可以在服務(wù)器上創(chuàng)建數(shù)據(jù)庫DatabaseExists可以確定數(shù)據(jù)庫是否存在,是否可以打開DeleteDatabase刪除相關(guān)的數(shù)據(jù)庫ExecuteCommand可以給數(shù)據(jù)庫傳送要執(zhí)行的命令ExecuteQuery可以給數(shù)據(jù)庫傳送查詢GetChangeSetDataContext對象跟蹤數(shù)據(jù)庫中發(fā)生的變化,這個命令可以訪問這些變化GetCommand可以訪問要執(zhí)行的命令GetTable可以訪問數(shù)據(jù)庫中表集合Refresh可以利用數(shù)據(jù)庫中存儲的數(shù)據(jù)刷新對象SubmitChanges在數(shù)據(jù)庫上執(zhí)行代碼建立的GRUD命令Translate把IDataReader轉(zhuǎn)換為對象4、DataContext對象的其他屬性如下:對象映射到LINQ對象上-DataContext對象方法說明ChangeConflicts調(diào)用SubmitChanges()方法時,提供一個導(dǎo)致并發(fā)沖突的對象集合CommandTimeout可以設(shè)置一個超時時間,命令允許在這個時間段內(nèi)在數(shù)據(jù)庫上執(zhí)行。如果查詢需要執(zhí)行較長時間,就應(yīng)把這個屬性設(shè)置為較高的值Connection可以處理客戶使用的System.Data.SqlClient.SqlConnection對象DeferredLoadingEnabled可以指定是否延遲加載一對多或一對一關(guān)系LoadOptions可以指定或檢索DataLoadOptions對象的值Log可以指定在查詢中使用的命令的輸出位置Mapping提供映射所基于的MetaModelObjectTrackingEnabled指定是否跟蹤數(shù)據(jù)庫中對象的變化,以進行事務(wù)處理。如果處理只讀數(shù)據(jù)庫,就應(yīng)把這個屬性設(shè)置為falseTransaction可以指定是否跟蹤數(shù)據(jù)庫中使用的本地事務(wù)處理Table<TEntity>的一些方法如下:對象映射到LINQ對象上-Table<TEntity>對象方法說明Attach可以把一個實體關(guān)聯(lián)到DAtaContext實例上AttachAll可以把一個實體集合關(guān)聯(lián)到DataContext實例上DeleteAllOnSubmit<TSubEntity>可以把所有未決的操作置于準備刪除的狀態(tài)。從DataContext對象上調(diào)用SubmitChanges()方法時,就執(zhí)行所有的操作DeleteOnSubmit可以把一個未決的操作置于準備刪除的狀態(tài)。從DataContext對象上調(diào)用SubmitChanges()方法時,就執(zhí)行所有的操作GetModifiedMembers提供一組已修改的對象,可以訪問它們的當前值和改變后的值GetNewBindingList提供一個新列表,以綁定到數(shù)據(jù)存儲上GetOriginalEntityState提供一個對象的實例,并且顯示其初始狀態(tài)InsertAllOnSubmit<TSubEntity>可以把一個未決的操作置于準備插入的狀態(tài)。從DataContext對象上調(diào)用SubmitChanges()方法時,就執(zhí)行所有的操作InsertOnSubmit可以把一個未決的操作置于準備插入的狀態(tài)。從DataContext對象上調(diào)用SubmitChanges()方法時,就執(zhí)行所有的操作見備注中的代碼:用Table屬性描述表名,用Column屬性描述列名一般列名和表名要一一對應(yīng),否那么要采用Name傳入?yún)?shù)不使用O/R設(shè)計器工作1、使用查詢表達式:varquery=frompindc.Productsselectp;foreach(Productsiteminquery){ Console.WriteLine(ductID);}查詢數(shù)據(jù)庫2、其它的查詢表達式見下表:查詢數(shù)據(jù)庫選項語法Projectselect<expression>Filterwhere<expression>,distinctTestany(<expression>),all(<expression>)Join<expression>join<expression>on<expression>equals<expression>Groupgroupby<expression>,into<expression>,<expression>groupjoin<decision>on<expression>equals<expression>into<expression>AggregateCount([<expression>]),sum(<expression>),min(<expression>),max(<expression>),avg(<expression>)PatitionSkip[while]<expression>,take[while]<expression>SetUnion,intersect,exceptOrderOrderby<expression>,<expression>[ascending|descending]3、使用表達式過濾:NorthwindDataContextdc=newNorthwindDataContext();varquery=frompindc.Productswherep.ProductName.StartsWith("L")wherep.ProductName.EndsWith("i")selectp;foreach(Productsiteminquery)Console.WriteLine(item.ProductName);查詢數(shù)據(jù)庫4、連接:NorthwindDataContextdc=newNorthwindDataContext();varquery=fromcindc.Customersjoinoindc.Ordersonc.CustomerIDequalso.CustomerIDorderbyc.CustomerIDselectnew{c.CustomerID,c.CompanyName,c.Country,o.OrderID,o.OrderDate};foreach(variteminquery){Console.WriteLine(item.CustomerID+"|"+item.CompanyName+"|"+item.Country+"|"+item.OrderID+"|"+item.OrderDate);}查詢數(shù)據(jù)庫5、組合數(shù)據(jù)項:NorthwindDataContextdc=newNorthwindDataContext();varquery=frompindc.Productsorderbyp.Category.CategoryNameascendinggrouppbyp.Category.CategoryNameintogselectnew{Category=g.Key,Products=g};foreach(variteminquery){Console.WriteLine(item.Category);foreach(varinnerIteminitem.Products){Conso

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論