![微軟企業(yè)庫(kù)學(xué)習(xí)手冊(cè).docx_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-3/10/8e078009-07e9-4b8e-ab82-c386a5ffda38/8e078009-07e9-4b8e-ab82-c386a5ffda381.gif)
![微軟企業(yè)庫(kù)學(xué)習(xí)手冊(cè).docx_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-3/10/8e078009-07e9-4b8e-ab82-c386a5ffda38/8e078009-07e9-4b8e-ab82-c386a5ffda382.gif)
![微軟企業(yè)庫(kù)學(xué)習(xí)手冊(cè).docx_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-3/10/8e078009-07e9-4b8e-ab82-c386a5ffda38/8e078009-07e9-4b8e-ab82-c386a5ffda383.gif)
![微軟企業(yè)庫(kù)學(xué)習(xí)手冊(cè).docx_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-3/10/8e078009-07e9-4b8e-ab82-c386a5ffda38/8e078009-07e9-4b8e-ab82-c386a5ffda384.gif)
![微軟企業(yè)庫(kù)學(xué)習(xí)手冊(cè).docx_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-3/10/8e078009-07e9-4b8e-ab82-c386a5ffda38/8e078009-07e9-4b8e-ab82-c386a5ffda385.gif)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微軟企業(yè)庫(kù)5.0 學(xué)習(xí)之路第一步、基本入門(mén)一、什么是企業(yè)庫(kù)? 企業(yè)庫(kù)包含一系列應(yīng)用程序模塊和核心架構(gòu)。這些高復(fù)用的組件旨在幫助開(kāi)發(fā)者解決一些共同的企業(yè)開(kāi)發(fā)問(wèn)題。 企業(yè)庫(kù)同時(shí)提供高可配置的特性,使我們管理重復(fù)的工作更加容易,例如我們知道的在應(yīng)用的很多地方發(fā)生的橫切關(guān)注點(diǎn)。包括像日志記錄、緩存、異常管理等。另外,它提供的依賴注入容器能夠簡(jiǎn)化和分解你的設(shè)計(jì),使他們更加可實(shí)驗(yàn)和容易理解,幫助你創(chuàng)建更加高性能的設(shè)計(jì)和各種應(yīng)用。 二、使用企業(yè)庫(kù)的3個(gè)簡(jiǎn)單步驟: 1.引用和配置你需要的程序集。 2.通過(guò)企業(yè)庫(kù)配置應(yīng)用。 3.在你的代碼中創(chuàng)建和使用企業(yè)庫(kù)對(duì)象。 三、企業(yè)庫(kù)的好處: 應(yīng)用模塊幫助解決開(kāi)發(fā)者從一個(gè)項(xiàng)目到另一個(gè)項(xiàng)目面對(duì)的共同問(wèn)題。他們的設(shè)計(jì)封裝了微軟推薦的做法,這些都是基于微軟框架的應(yīng)用開(kāi)發(fā)。例如,數(shù)據(jù)訪問(wèn)應(yīng)用模塊提供了對(duì)ADO.NET訪問(wèn)最頻繁使用的特征。在某些情況下,應(yīng)用模塊還添加了一些基礎(chǔ)類(lèi)庫(kù)沒(méi)有直接提供的相關(guān)功能。 四、企業(yè)庫(kù)的目標(biāo): 1.一致。所有的企業(yè)庫(kù)模塊都堅(jiān)持一致的設(shè)計(jì)模式和實(shí)現(xiàn)方式。 2.可擴(kuò)展性。所有的應(yīng)用模塊包括定義擴(kuò)展點(diǎn),允許開(kāi)發(fā)人員通過(guò)添加自己的代碼定制應(yīng)用模塊的行為。 3.易用性。企業(yè)庫(kù)提供了許多實(shí)用性的東西,包括一個(gè)圖形化配置工具,簡(jiǎn)單的安裝過(guò)程,完成的文檔和示例。 4.集成。企業(yè)庫(kù)應(yīng)用模塊被設(shè)計(jì)得能夠一起很好的工作,并且也被這樣測(cè)試過(guò)。但是你不必一起使用他們。我們可以單獨(dú)使用這些應(yīng)用模塊,同時(shí)這些應(yīng)用模塊之間也有些依賴,比如在企業(yè)庫(kù)核心和Unity中的一些通用組件。 上面是企業(yè)庫(kù)的基本概念,理解了企業(yè)庫(kù)的相關(guān)知識(shí)后,我們可以開(kāi)始來(lái)安裝企業(yè)庫(kù)了1、下載地址:點(diǎn)我進(jìn)入下載頁(yè)面(不是直接下載),安裝后就可以使用了。這次5.0相比4.1的最大改動(dòng)就是整個(gè)配置工具采用了WPF重新構(gòu)建和實(shí)例化和管理對(duì)象生命周期的全依賴注入的實(shí)現(xiàn),同時(shí)支持VS2008SP1和VS2010,話說(shuō)雖然這次的配置工具變化挺大的,但是一旦熟悉了就覺(jué)得比4.1的好,因?yàn)榭梢郧宄目匆?jiàn)每個(gè)模塊的之間的依賴關(guān)系。一、Unity和對(duì)象生成器的整合 在這個(gè)版本中,用于創(chuàng)建對(duì)象的基本技術(shù)是一個(gè)單一的依賴注入容器,默認(rèn)的是Unity。你可以使用容器生成企業(yè)庫(kù)對(duì)象的實(shí)例并注入到其他的對(duì)象。 企業(yè)庫(kù)提供一個(gè)標(biāo)準(zhǔn)的接口從Unity容器中來(lái)獲得定義在企業(yè)庫(kù)配置中的對(duì)象的實(shí)例,如SqlDatabase或LogWriter.另外,注入友好的實(shí)例門(mén)面處理靜態(tài)門(mén)面之外是有效的,因?yàn)殪o態(tài)門(mén)面不能用注入,但是為了向后兼容以前的版本而存在。在本版本中的示例中都是用依賴注入,但是以前版本中是用的靜態(tài)工廠類(lèi)和靜態(tài)門(mén)面在這個(gè)版本中還是支持的。對(duì)象生成器,一個(gè)低版本的依賴注入機(jī)制在這個(gè)版本中被歸入U(xiǎn)nity中,在項(xiàng)目中不再需要單獨(dú)引用對(duì)象生成器集。 支持Unity容器,必須引用一個(gè)被包含在企業(yè)庫(kù)中的Microsoft.Practices.ServiceLocation程序集。如果要使用一個(gè)第3方的依賴注入容器,必須直接實(shí)現(xiàn)IServiceLocator接口或者通過(guò)適配器實(shí)現(xiàn)。二、影響所有模塊的變化: 1.在企業(yè)庫(kù)中主要修正是使用依賴注入機(jī)制。所用的應(yīng)用模塊以及核心系統(tǒng)都是用依賴注入機(jī)制,并使用Unity作為默認(rèn)的依賴注入容器,來(lái)創(chuàng)建和管理企業(yè)庫(kù)對(duì)象。 2.自主容器的實(shí)現(xiàn)通過(guò)實(shí)現(xiàn)Common Service Locator項(xiàng)目提供的 IServiceLocator 接口來(lái)完成。 3.由于錯(cuò)誤配置引發(fā)的錯(cuò)誤將提供更多有用的錯(cuò)誤信息。 4.配置系統(tǒng)公開(kāi)了一個(gè) fluent接口,用來(lái)為單個(gè)對(duì)象或整個(gè)應(yīng)用創(chuàng)建和填充配置源。fluent API使得為各種情景創(chuàng)建配置源更加容易。 5.ConfigurationView類(lèi)被刪除. 6.一些配置元素有默認(rèn)值,可能不同于以前版本的隱式默認(rèn)值. 7.企業(yè)庫(kù)現(xiàn)在允許你通過(guò)另一個(gè)配置文件合成一個(gè)混合配置文件. 8.可以可通過(guò)不同的配置文件讀取不同的配置信息. 9.企業(yè)庫(kù)不支持XAML瀏覽器應(yīng)用程序(XBAP). 10.WmiEnabled標(biāo)志為了像前兼容仍然存在企業(yè)庫(kù)中,但是在5.0中是被忽略的,而且將來(lái)會(huì)被刪除. 11.改進(jìn)式的安裝允許你只安裝部分應(yīng)用模塊及配置工具. 12.在以前版本中要做統(tǒng)一集成,必須添加核心企業(yè)庫(kù)的擴(kuò)展和每個(gè)模塊的擴(kuò)展?,F(xiàn)在如果你只需要直接訪問(wèn)容器,那么只有核心擴(kuò)展是必須的。單獨(dú)模塊將自動(dòng)支持。 舊的功能為了保持像前兼容仍然保留,但已經(jīng)不起作用。 13.FileConfigurationSource.Save 的簽名已經(jīng)改變,參數(shù)由3個(gè)變?yōu)?個(gè)。 14.快速入門(mén)不再包含在主安裝程序中。 三、Breaking變化: 1.企業(yè)庫(kù)現(xiàn)在拋出了一個(gè)配置錯(cuò)誤ActivationException,之前是System.Configuration.ConfigurationErrorsException。這包括試著解決沒(méi)有配置信息錯(cuò)誤的一個(gè)實(shí)例提供者。 2.以前版本在獲取應(yīng)用模塊錯(cuò)誤時(shí)拋出BuildFailedException錯(cuò)誤,現(xiàn)在對(duì)于所有的應(yīng)用模塊都拋出ActivationException 3 .之前的版本,在講一個(gè)空源傳到容器來(lái)調(diào)用容器的時(shí)候,會(huì)拋出ArgumentNullException,現(xiàn)在拋出NullReferenceException 4.ObjectBuilder2不再是一個(gè)單獨(dú)的程序集,而是集成到了Unity集合中,在項(xiàng)目中也不需要引用ObjectBuilder2.dll。 5.WMI支持已經(jīng)從企業(yè)庫(kù)中刪除,除了在logging模塊中的WMI跟蹤監(jiān)聽(tīng)器。 6.如果你沒(méi)有關(guān)閉DbDataReader,可能會(huì)導(dǎo)致隨機(jī)的、很難在您的代碼中找到的錯(cuò)誤,尤其是當(dāng)你正在一個(gè)由TransactionScope上下文創(chuàng)建的隱式事務(wù)下操作時(shí)。 你必須始終確保您的應(yīng)用程序及時(shí)關(guān)閉DbDataReader,無(wú)論是明確的DbDataReader.Close方法關(guān)閉或是逼迫DbDataReader釋放。 7.如果你使用 validator 特性必須引用 System.ComponentModel.DataAnnotations程序集。 8.為FileConfigurationSource.Save方法簽名已更改。該方法有兩個(gè)參數(shù),而不是3個(gè)參數(shù) 9.Microsoft.Practices.EnterpriseLibrary.Configuration.Design.dll集合的功能和其他設(shè)計(jì)時(shí)集合被一個(gè)新的集合Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll代替。 10,性能計(jì)數(shù)器異常從PolicyInjection.CallHandlers移到 PolicyInjection 程序集。 11.包含在Policy Injection Application Block中的CachingCallHandler有未處理的安全漏洞,已經(jīng)從Policy Injection Application Block中移除。 四、配置工具的改變: 1.新的企業(yè)擁有一個(gè)新的GUI庫(kù)和一個(gè)元數(shù)據(jù)驅(qū)動(dòng)的可擴(kuò)展性模。 2.支持向?qū)?3.新的類(lèi)型選擇。 4.不支持對(duì)依賴策略的Environmental Overrides 。日志模塊處理Categories。 五、緩存模塊變化: 1.緩存清除已被完全重寫(xiě)的性能優(yōu)化 六、數(shù)據(jù)庫(kù)訪問(wèn)模塊: 1.ExecuteReader, ExecuteXmlReader, ExecuteScalar, and ExecuteNonQuery方法具有異步版本。 2.包含了很多新的方法和類(lèi)允許你提取數(shù)據(jù)作為對(duì)象序列。例如在合適的時(shí)候使用客戶端查詢技術(shù),如LINQ. 3.存在的方法ExecuteReader和新的方法BeginExecuteReader不接收CommandBehavior 參數(shù)。默認(rèn)的當(dāng)調(diào)用這些方法的時(shí)候這些方法 會(huì)自動(dòng)設(shè)置CommandBehavior 屬性到reder中用來(lái)關(guān)閉連接直到指定一個(gè)事務(wù)。 七、異常處理模塊: 1.日志異常處理重新使用日志模塊的Log Writer and Trace Listeners 。這在之前版本中不是默認(rèn)設(shè)置。 2.增加一個(gè)功能,通過(guò)ExceptionManager.Process 方法接收一個(gè)默認(rèn)值并返回一個(gè)值。EntLib微軟企業(yè)庫(kù)5.0 學(xué)習(xí)之路第二步、使用VS2010+Data Access模塊建立多數(shù)據(jù)庫(kù)項(xiàng)目現(xiàn)在我就開(kāi)始進(jìn)入學(xué)習(xí)之路的第二步Data Access模塊,這個(gè)模塊是企業(yè)庫(kù)中被使用頻率最高的模塊,它很好的封裝了數(shù)據(jù)庫(kù)操作應(yīng)用,為我們進(jìn)行多數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)提供了便利,只需更改配置文件就可以很快的切換數(shù)據(jù)庫(kù)訪問(wèn)(可惜還是要重寫(xiě)SQL語(yǔ)句,沒(méi)法和ORM比)。下面是我在配置企業(yè)庫(kù)的時(shí)候碰到問(wèn)題,如果沒(méi)有碰到可以略去不看(可能有點(diǎn)小白)注意:此處切換數(shù)據(jù)庫(kù)配置必須是計(jì)算機(jī)中已經(jīng)安裝好相應(yīng)的數(shù)據(jù)庫(kù)訪問(wèn)模塊,如需要進(jìn)行從MS SQL向SQLite數(shù)據(jù)庫(kù)的變更時(shí),計(jì)算機(jī)中必須安裝好SQLite數(shù)據(jù)庫(kù)訪問(wèn)模塊(在這里我就碰到了這個(gè)問(wèn)題,原來(lái)我機(jī)器上在VS2008開(kāi)發(fā)時(shí)已經(jīng)安裝過(guò)SQLite數(shù)據(jù)庫(kù)訪問(wèn)模塊,但是新裝了VS2010,在VS2010引用對(duì)話框中也能訪問(wèn)到在VS2008安裝的SQLite(但是在企業(yè)庫(kù)5.0配置器中無(wú)法查看到SQLite),但是發(fā)現(xiàn)更改企業(yè)庫(kù)的配置文件后無(wú)法訪問(wèn)SQLite數(shù)據(jù)庫(kù),嘗試了很多方法都沒(méi)用,結(jié)果死馬當(dāng)活馬醫(yī)又重新裝了一遍SQLite數(shù)據(jù)庫(kù)訪問(wèn)模塊再重新打開(kāi)企業(yè)庫(kù)配置器就可以看到SQLite數(shù)據(jù)庫(kù)了(所以請(qǐng)確保在企業(yè)庫(kù)編輯器中可以查看到要切換的數(shù)據(jù)庫(kù),否則可能導(dǎo)致無(wú)法訪問(wèn)數(shù)據(jù)庫(kù))??聪聢D: 回歸正題,這次的學(xué)習(xí)由于VS2010發(fā)布了,而且企業(yè)庫(kù)5.0也都支持.NET4.0,所以決定企業(yè)庫(kù)的學(xué)習(xí)之路采用VS2010進(jìn)行學(xué)習(xí)(順便熟悉下.NET4的特性,畢竟公司的項(xiàng)目不可能立馬轉(zhuǎn)移到.NET4.0的,現(xiàn)在就當(dāng)練手吧)好了,現(xiàn)在就開(kāi)始進(jìn)行第2步的學(xué)習(xí)了,首先看下項(xiàng)目的結(jié)構(gòu):項(xiàng)目采用仿MS PetShop架構(gòu),如不了解此架構(gòu)可以到此查看了解:PetShop的系統(tǒng)架構(gòu)設(shè)計(jì)其中DAL和DALSQLite層對(duì)應(yīng)MS SQL和SQLite數(shù)據(jù)庫(kù),Helper為整個(gè)項(xiàng)目的幫助器現(xiàn)在來(lái)具體了解下DAL層在DAL層中引用了Helper,IDAL,EnterpriseLibrary.Common和EnterpriseLibrary.Data這4個(gè)項(xiàng)目,其中Helper項(xiàng)目中有個(gè)DBHelper.cs,用于獲取當(dāng)前的數(shù)據(jù)對(duì)象,其代碼如下(采用了C#4.0的語(yǔ)法特性,默認(rèn)參數(shù),數(shù)據(jù)庫(kù)對(duì)象名默認(rèn)為空,這樣則會(huì)調(diào)用企業(yè)庫(kù)默認(rèn)的數(shù)據(jù)庫(kù)對(duì)象,同時(shí)也可以在調(diào)用的時(shí)候賦值,這樣則根據(jù)傳遞過(guò)來(lái)的數(shù)據(jù)庫(kù)對(duì)象名來(lái)創(chuàng)建數(shù)據(jù)庫(kù),通過(guò)這個(gè)參數(shù)我們將原來(lái)需要重載的2個(gè)方法才能實(shí)現(xiàn)合并成了一個(gè)方法):view sourceprint?01using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;02using Microsoft.Practices.EnterpriseLibrary.Data;0304namespace EntLibStudy.Helper0506public static class DBHelper0708/ 09/ 獲取數(shù)據(jù)庫(kù)對(duì)象10/ 11/ 數(shù)據(jù)庫(kù)實(shí)例名(默認(rèn)name為空,調(diào)用默認(rèn)數(shù)據(jù)庫(kù)實(shí)例)12/ 數(shù)據(jù)庫(kù)對(duì)象13public static Database CreateDataBase(string name = )1415/return DatabaseFactory.CreateDatabase(name);16return EnterpriseLibraryContainer.Current.GetInstance(name);171819在DAL層中則引用Helper來(lái)獲取數(shù)據(jù)庫(kù)對(duì)象,進(jìn)行數(shù)據(jù)庫(kù)操作,我們現(xiàn)在來(lái)看下具體的數(shù)據(jù)庫(kù)訪問(wèn)類(lèi)編寫(xiě)代碼,學(xué)員操作類(lèi):view sourceprint?001using System;002using System.Collections.Generic;003using System.Data;004using System.Data.Common;005using System.Linq;006using System.Text;007008using Microsoft.Practices.EnterpriseLibrary.Data;009010using EntLibStudy.Model;011using EntLibStudy.Helper;012013namespace EntLibStudy.DAL014015public class StudentService : EntLibStudy.IDAL.IStudentService016017/ 018/ 新增學(xué)生019/ 020/ 學(xué)生對(duì)象021/ 022public int Add(Student student)023024Database db = DBHelper.CreateDataBase();025StringBuilder sb = new StringBuilder();026sb.Append(insert into Student values(ClassId,SID,Password,Name,Sex,Birthday,IsAdmin);SELECT IDENTITY;);027DbCommand cmd = db.GetSqlStringCommand(sb.ToString();028db.AddInParameter(cmd, ClassId, DbType.String, student.ClassId);029db.AddInParameter(cmd, SID, DbType.String, student.Sid);030db.AddInParameter(cmd, Password, DbType.String, student.Password);031db.AddInParameter(cmd, Name, DbType.String, student.Name);032db.AddInParameter(cmd, Sex, DbType.Int32, student.Sex);033db.AddInParameter(cmd, Birthday, DbType.DateTime, student.Birthday);034db.AddInParameter(cmd, IsAdmin, DbType.Int32, student.IsAdmin);035int id = Convert.ToInt32(db.ExecuteScalar(cmd);036return id;037038039/ 040/ 更新041/ 042/ 學(xué)生對(duì)象043/ 是否成功044public bool Update(Student student)045046Database db = DBHelper.CreateDataBase();047StringBuilder sb = new StringBuilder();048sb.Append(update Student set ClassId=ClassId,);049sb.Append(SID=SID,);050sb.Append(Password=Password,);051sb.Append(Name=Name,);052sb.Append(Sex=Sex,);053sb.Append(Birthday=Birthday,);054sb.Append(IsAdmin=IsAdmin );055sb.Append( where ID=ID);056DbCommand cmd = db.GetSqlStringCommand(sb.ToString();057db.AddInParameter(cmd, ClassId, DbType.String, student.ClassId);058db.AddInParameter(cmd, SID, DbType.String, student.Sid);059db.AddInParameter(cmd, Password, DbType.String, student.Password);060db.AddInParameter(cmd, Name, DbType.String, student.Name);061db.AddInParameter(cmd, Sex, DbType.Int32, student.Sex);062db.AddInParameter(cmd, Birthday, DbType.DateTime, student.Birthday);063db.AddInParameter(cmd, IsAdmin, DbType.Int32, student.IsAdmin);064db.AddInParameter(cmd, ID, DbType.Int32, student.Id);065return db.ExecuteNonQuery(cmd) 0 ? true : false;066067068/ 069/ 刪除070/ 071/ 學(xué)生ID072/ 是否成功073public bool Delete(int id)074075Database db = DBHelper.CreateDataBase();076StringBuilder sb = new StringBuilder();077sb.Append(delete from Student );078sb.Append( where ID=ID);079DbCommand cmd = db.GetSqlStringCommand(sb.ToString();080db.AddInParameter(cmd, ID, DbType.Int32, id);081082return db.ExecuteNonQuery(cmd) 0 ? true : false;083084085/ 086/ 根據(jù)學(xué)生ID查詢學(xué)生對(duì)象087/ 088/ 學(xué)生ID089/ 090public Student SelectById(int id)091092Student student = null;093Database db = DBHelper.CreateDataBase();094StringBuilder sb = new StringBuilder();095sb.Append(select * from Student );096sb.Append( where ID=ID);097DbCommand cmd = db.GetSqlStringCommand(sb.ToString();098db.AddInParameter(cmd, ID, DbType.Int32, id);099100using (IDataReader reader = db.ExecuteReader(cmd)101102if (reader.Read()103104student = new Student()105106Id = reader.GetInt32(0),107ClassId = reader.GetInt32(1),108Sid = reader.GetString(2),109Password = reader.GetString(3),110Name = reader.GetString(4),111Sex = reader.GetInt32(5),112Birthday = reader.GetDateTime(6),113IsAdmin = reader.GetInt32(7)114;115116117118return student;119120121/ 122/ 查詢所有學(xué)生信息123/ 124/ 125public IList SelectAll()126127List list = new List();128Database db = DBHelper.CreateDataBase();129StringBuilder sb = new StringBuilder();130sb.Append(select * from Student );131DbCommand cmd = db.GetSqlStringCommand(sb.ToString();132133using (IDataReader reader = db.ExecuteReader(cmd)134135while (reader.Read()136137list.Add(new Student()138139Id = reader.GetInt32(0),140ClassId = reader.GetInt32(1),141Sid = reader.GetString(2),142Password = reader.GetString(3),143Name = reader.GetString(4),144Sex = reader.GetInt32(5),145Birthday = reader.GetDateTime(6),146IsAdmin = reader.GetInt32(7)147);148149150return list;151152153/ 154/ 查詢所有學(xué)生信息155/ 156/ 157public IList SelectAllMapper()158159var list = new List();160Database db = DBHelper.CreateDataBase();161DataAccessor studentAccessor;162/studentAccessor = db.CreateSqlStringAccessor(select * from Student,163/ MapBuilder.MapAllProperties().164/ Build()165/ );166studentAccessor = db.CreateSqlStringAccessor(select * from Student,167MapBuilder.MapAllProperties().168Map(p = p.Id).ToColumn(ID).169Map(p = p.Sid).ToColumn(SID).170Map(p = p.Password).WithFunc(f = *)./將密碼轉(zhuǎn)換為*,無(wú)法直接查看171Map(p = p.Name).WithFunc(ToUpperName)./將學(xué)員名稱轉(zhuǎn)換為大寫(xiě)172Map(p = p.Sex).ToColumn(Sex).173Map(p = p.Birthday).ToColumn(Birthday).174Build()175);176list = studentAccessor.Execute().ToList();177return list;178179180/ 181/ 將學(xué)員名稱轉(zhuǎn)換為大寫(xiě)182/ 183/ 184/ 185private string ToUpperName(IDataRecord dataRecord)186187var name = (string)dataRecordName;188return name.ToUpper();189190191public Student SelectBySid(string sid)192193Student student = null;194Database db = DBHelper.CreateDataBase();195StringBuilder sb = new StringBuilder();196sb.Append(select * from Student );197sb.Append( where SID=SID);198DbCommand cmd = db.GetSqlStringCommand(sb.ToString();199db.AddInParameter(cmd, SID, DbType.String, sid);200201using (IDataReader reader = db.ExecuteReader(cmd)202203if (reader.Read()204205student = new Student()206207Id = reader.GetInt32(0),208ClassId = reader.GetInt32(1),209Sid = reader.GetString(2),210Password = reader.GetString(3),211Name = reader.GetString(4),212Sex = reader.GetInt32(5),213Birthday = reader.GetDateTime(6),214IsAdmin = reader.GetInt32(7)215;216217218219return student;220221222223其中的代碼都是采用了比較常見(jiàn)的老套路:1、獲取數(shù)據(jù)庫(kù)對(duì)象2、構(gòu)建Command對(duì)象并進(jìn)行執(zhí)行語(yǔ)句及參數(shù)賦值3、通過(guò)數(shù)據(jù)庫(kù)對(duì)象調(diào)用相應(yīng)方法執(zhí)行Command企業(yè)庫(kù)在Data Access上幫我們做了比較好的封裝,相當(dāng)于為我們提供了如SQLHelper,OracleHelper類(lèi),只不過(guò)這個(gè)幫助類(lèi)轉(zhuǎn)換了一個(gè)個(gè)數(shù)據(jù)庫(kù)的對(duì)象,通過(guò)數(shù)據(jù)庫(kù)對(duì)象來(lái)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行操作(個(gè)人認(rèn)為通過(guò)這種方式進(jìn)行操作更加直觀,而且企業(yè)庫(kù)的對(duì)SQL語(yǔ)句的參數(shù)操作方法也很直觀:AddInParameter,AddOutParameter,GetParameterValue很好的區(qū)分了參數(shù)的操作,比原來(lái)的SQLCommand好多了)如果仔細(xì)看了上面操作代碼的朋友肯定發(fā)現(xiàn)了類(lèi)中有個(gè)叫SelectAllMapper的方法,這個(gè)方法采用的是企業(yè)庫(kù)5.0中新提供的Accessor進(jìn)行RowMapper來(lái)直接為實(shí)體
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能食堂運(yùn)營(yíng)管理服務(wù)合同
- 2025年度文化藝術(shù)品交易合同擔(dān)保執(zhí)行細(xì)則
- 電信網(wǎng)絡(luò)詐騙的常見(jiàn)手段與防范策略培訓(xùn)
- 2025年度建筑工地安全防護(hù)腳手架采購(gòu)協(xié)議
- 環(huán)保理念在醫(yī)療設(shè)施路橋設(shè)計(jì)中的應(yīng)用研究
- 2025年度戶外臨時(shí)廣告承攬合作協(xié)議(HBF-SH)
- 城市公交車(chē)電動(dòng)化替代項(xiàng)目可行性研究報(bào)告-2025年超長(zhǎng)期特別國(guó)債支持重點(diǎn)領(lǐng)域
- 現(xiàn)代企業(yè)網(wǎng)絡(luò)安全技術(shù)的挑戰(zhàn)與機(jī)遇
- 2025年度新能源汽車(chē)充電站建設(shè)承包協(xié)議
- 生態(tài)保護(hù)與科技手段的融合探討
- 急診酒精中毒護(hù)理查房
- 團(tuán)播主持人協(xié)議
- 《招標(biāo)投標(biāo)法解讀》課件
- 施耐德低壓電器選型
- 醫(yī)風(fēng)醫(yī)德ppt課件2023年
- 2023城鎮(zhèn)給水排水管道原位固化法修復(fù)工程技術(shù)規(guī)程
- 高一必修二英語(yǔ)測(cè)試題
- 裝飾施工圖設(shè)計(jì)深度
- 100以內(nèi)的加減法練習(xí)1000題(可直接打印)
- 技術(shù)人員能力評(píng)價(jià)表
- 碳纖維加固定額B013
評(píng)論
0/150
提交評(píng)論