版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、如有幫助,歡迎支持。一步一步學(xué)Linq to sql(二):DataContext與實(shí)體DataContextDataContext 類型(數(shù)據(jù)上下文) 是命名空間下的重要類型,用于把查詢句法翻譯成SQL 語(yǔ)句,以及把數(shù)據(jù)從數(shù)據(jù)庫(kù)返回給調(diào)用方和把實(shí)體的修改寫入數(shù)據(jù)庫(kù)。DataContext 提供了以下一些使用的功能:以日志形式記錄DataContext 生成的 SQL執(zhí)行 SQL(包括查詢和更新語(yǔ)句)創(chuàng)建和刪除數(shù)據(jù)庫(kù)DataContext 是實(shí)體和數(shù)據(jù)庫(kù)之間的橋梁,那么首先我們需要定義映射到數(shù)據(jù)表的實(shí)體。定義實(shí)體類using Table (Name =Customers)publicclass
2、CustomerColumn (IsPrimaryKey =true )publicstringCustomerID get ;set ;Column (Name =ContactName)publicstringName get ;set ; Column publicstringCity get ;set ;1如有幫助,歡迎支持。以 Northwind 數(shù)據(jù)庫(kù)為例,上述Customers 類被映射成一個(gè)表,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的Customers 表。然后在類型中定義了三個(gè)屬性,對(duì)應(yīng)表中的三個(gè)字段。其中,CustomerID 字段是主鍵,如果沒有指定 Column 特性的 Name 屬性,那么系統(tǒng)
3、會(huì)把屬性名作為數(shù)據(jù)表的字段名,也就是說實(shí)體類的屬性名就需要和數(shù)據(jù)表中的字段名一致?,F(xiàn)在,創(chuàng)建一個(gè)ASP.NET 頁(yè)面,然后在頁(yè)面上加入一個(gè)GridView 控件, 使用下面的代碼進(jìn)行綁定數(shù)據(jù):usingDataContextctx =new DataContext( server=xxx;database=Northwind;uid=xxx;pwd=xxx);Table Customers = ctx.GetTable();GridView1.DataSource =from cinCustomersA )selectnew 顧客 ID=c.CustomerID,顧客名 =c.Name,城市
4、=c.City;GridView1.DataBind();使用 DataContext 類型把實(shí)體類和數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)。你可以直接在DataContext的構(gòu)造方法中定義連接字符串,也可以使用IDbConnection :usingIDbConnectionconn =newSqlConnection( server=xxx;database=Northwind;uid=xxx;pwd=xxx);DataContextctx =new DataContext(conn);之后,通過GetTable 獲取表示底層數(shù)據(jù)表的Table 類型,顯然,數(shù)據(jù)庫(kù)中的Customers表的實(shí)體是Cust
5、omer 類型。隨后的查詢句法, 即使你不懂SQL 應(yīng)該也能看明白。 從 Customers表中找出 CustomerID 以 “A”開頭的記錄,并把CustomersID 、 Name 以及 City 封裝成新的匿名類型進(jìn)行返回。2如有幫助,歡迎支持。結(jié)果如下圖:強(qiáng)類型 DataContextpublicpartialclassNorthwindDataContext:DataContextpublicTable Customers;publicNorthwindDataContext(IDbConnectionconnection) :base (connection) publicNor
6、thwindDataContext(stringconnection) :base (connection) 強(qiáng)類型數(shù)據(jù)上下文使代碼更簡(jiǎn)潔:NorthwindDataContextctx =newNorthwindDataContext( server=xxx;database=Northwind;uid=xxx;pwd=xxx);GridView1.DataSource= fromc inctx.CustomersA ) selectnew 顧客 ID = c.CustomerID,顧客名 = c.Name,城市 = c.City ;GridView1.DataBind();DataCont
7、ext 其實(shí)封裝了很多實(shí)用的功能,下面一一介紹。3如有幫助,歡迎支持。日志功能usingSystem.IO;NorthwindDataContextctx =newNorthwindDataContext( server=xxx;database=Northwind;uid=xxx;pwd=xxx);StreamWritersw =new StreamWriter (Server.MapPath(log.txt), true );/ Appendctx.Log = sw;GridView1.DataSource= fromc in ctx.Customerswherec.CustomerID.
8、StartsWith(A ) selectnew 顧客 ID = c.CustomerID,顧客名 = c.Name,城市 = c.City ;GridView1.DataBind();sw.Close();運(yùn)行程序后在網(wǎng)站所在目錄生成了log.txt ,每次查詢都會(huì)把諸如下面的日志追加到文本文件中:SELECT t0.CustomerID, t0.ContactName, t0.CityFROM Customers AS t0WHERE t0.CustomerID LIKE p0p0: Input String (Size = 2; Prec = 0; Scale = 0) A%應(yīng)該說這樣的
9、日志對(duì)于調(diào)試程序是非常有幫助的。4如有幫助,歡迎支持。探究查詢usingusingNorthwindDataContextctx =newNorthwindDataContext( server=xxx;database=Northwind;uid=xxx;pwd=xxx);varselect= fromc inctx.CustomersA ) selectnew 顧客 ID = c.CustomerID,顧客名 = c.Name,城市 = c.City ;DbCommandcmd = ctx.GetCommand(select);Response.Write(cmd.CommandText
10、+);foreach( DbParameterparmin cmd.Parameters)Response.Write(string.Format( 參數(shù)名 :0,參數(shù)值 :1, parm.ParameterName,parm.Value);Customercustomer.Name =zhuye;IList queryText = ctx.GetChangeSet().ModifiedEntities;Response.Write(Customer )queryText0).Name);在這里,我們通過DataContext 的 GetCommand 方法獲取了查詢對(duì)應(yīng)的DbCommand
11、,并且輸出了CommandText 和所有的 DbParameter。之后,我們又通過GetChangeSet 方法獲取了修改后的實(shí)體,并輸出了修改內(nèi)容。5如有幫助,歡迎支持。執(zhí)行查詢NorthwindDataContextctx =newNorthwindDataContext( server=xxx;database=Northwind;uid=xxx;pwd=xxx);string newcity =Shanghai;ctx.ExecuteCommand(updateCustomers set City=0where CustomerID likeA% , newcity);IEnume
12、rable customers = ctx.ExecuteQuery( select * from Customerswhere CustomerID like A%);GridView1.DataSource = customers;GridView1.DataBind();前一篇文章已經(jīng)說了, 雖然 Linq to sql 能實(shí)現(xiàn) 90以上的 TSQL 功能。但是不可否認(rèn),對(duì)于復(fù)雜的查詢, 使用 TSQL 能獲得更好的效率。 因此,DataContext 類型也提供了執(zhí)行 SQL 語(yǔ)句的能力。代碼的執(zhí)行結(jié)果如下圖:創(chuàng)建數(shù)據(jù)庫(kù)testContextctx =new testContext(
13、server=xxx;database=testdb;uid=xxx;pwd=xxx);ctx.CreateDatabase(); Table (Name =test)publicclasstest6如有幫助,歡迎支持。Column (IsPrimaryKey =true , IsDbGenerated =true )publicintID get ;set ; Column (DbType= varchar(20)publicstringName get ;set ; publicpartialclasstestContext:DataContextpublicTable test;publ
14、ictestContext(stringconnection) :base (connection) 這段代碼在數(shù)據(jù)庫(kù)中創(chuàng)建了名為testdb 的數(shù)據(jù)庫(kù),等同于下面的腳本:CREATETABLE dbo. test(ID intIDENTITY( 1, 1 )NOT NULL,Name varchar( 20 )COLLATE Chinese_PRC_CI_ASNULL,CONSTRAINT PK_testPRIMARYKEY CLUSTERED(IDASC) WITH( IGNORE_DUP_KEY=OFF)ON PRIMARY)ON PRIMARY同時(shí), DataContext 還提供了D
15、eleteDatabase()方法,在這里就不列舉了。7如有幫助,歡迎支持。使用 DbDataReader 數(shù)據(jù)源usingvarconn =newSqlConnection ( server=xxx;database=Northwind;uid=xxx;pwd=xxx);varctx =newDataContext (conn);varcmd =new SqlCommand( select * from customers where CustomerID like A%, conn);conn.Open();varreader = cmd.ExecuteReader();GridView1.Dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《跳蹦蹦床的大象》少兒美術(shù)教育繪畫課件創(chuàng)意教程教案
- 蒲公英課件文庫(kù)
- 西南林業(yè)大學(xué)《產(chǎn)品攝影》2023-2024學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《設(shè)計(jì)模式》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023年1月福建省普通高中學(xué)業(yè)水平合格性考試歷史試題(原卷版)
- 陀螺課件 圖文
- 西京學(xué)院《面向?qū)ο蟪绦蛟O(shè)計(jì)》2022-2023學(xué)年期末試卷
- 西華師范大學(xué)《小學(xué)數(shù)學(xué)課程與教學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西華師范大學(xué)《運(yùn)動(dòng)技能學(xué)習(xí)與控制》2022-2023學(xué)年期末試卷
- 臺(tái)兒莊介紹課件
- 2024-2030年中國(guó)干細(xì)胞醫(yī)療行業(yè)趨勢(shì)分析及投資戰(zhàn)略研究報(bào)告
- 消防安全培訓(xùn)內(nèi)容
- 2024-2030年鋁型材行業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2024-2030年辣椒種植行業(yè)市場(chǎng)深度分析及發(fā)展策略研究報(bào)告
- 變電站綠化維護(hù)施工方案
- 校園展美 課件 2024-2025學(xué)年人美版(2024)初中美術(shù)七年級(jí)上冊(cè)
- 初中英語(yǔ)研修方案
- 解碼國(guó)家安全知到章節(jié)答案智慧樹2023年國(guó)際關(guān)系學(xué)院
- 典范英語(yǔ)7-4中英文對(duì)照翻譯Oh,otto!Oh,otto
- 混凝土早強(qiáng)劑檢驗(yàn)報(bào)告(出廠)
- 超聲引導(dǎo)下腰椎部位的穿刺ppt課件
評(píng)論
0/150
提交評(píng)論