使用SubSonic生成数据访问层步骤
使用SubSonic生成數(shù)據(jù)訪(fǎng)問(wèn)層步驟
SubSonic(http://subsonicproject.com/)是一個(gè)ORM框架,或者說(shuō)是一個(gè)代碼生成器,它的工作流程和一般的ORM工具不同,所有的工作全是自動(dòng)完成,生成完整的數(shù)據(jù)訪(fǎng)問(wèn)層類(lèi)庫(kù),然后在工程中引用即可使用。整個(gè)過(guò)程很簡(jiǎn)單,下面就生成數(shù)據(jù)訪(fǎng)問(wèn)層類(lèi)庫(kù)的過(guò)程記錄如下:
??? 1、建立一個(gè)c#類(lèi)庫(kù)工程
??? 2、刪除默認(rèn)生成的class1.cs文件
??? 3、工程添加三個(gè)引用,SubSonic.dll(前提是先安裝了subsonic才會(huì)有這個(gè))、?
System.Web和System.Configuration命名空間
??? 4、在工程下建立一個(gè)文件夾,Generated
5、在工程中添加一個(gè)新文本文件,命名為:app.config,內(nèi)容如下:
?
<?xml version="1.0"?>
<configuration>
?
? <!-- 第一部分是照著寫(xiě)就可以了,沒(méi)有什么好說(shuō)的 -->
? <configSections>
??? <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
? </configSections>
?
? <!-- 第二部分是定義一個(gè)或者多個(gè)連接數(shù)據(jù)庫(kù)的字符串,其中要注意的是這部分的name的值是第三部分connectionStringName屬性的值-->
? <connectionStrings>
??? <!-- 連接數(shù)據(jù)庫(kù)的字符串 -->
??? <add name="Nowthwin"
???????? connectionString="Data Source=.;Initial Catalog=BuySaleStorage;Persist Security Info=True;User ID=sa;"/>
? </connectionStrings>
?
? <!-- 第三部分是將連接字符串和數(shù)據(jù)庫(kù)驅(qū)動(dòng)匹配起來(lái)成為一個(gè)連接。name是連接的名字,generatedNamespace的值是生成對(duì)象的命名空間-->
? <SubSonicService defaultProvider="Nowthwin">
??? <providers>
????? <clear/>
????? <add name="Nowthwin"
?????????? type="SubSonic.SqlDataProvider, SubSonic"
?????????? connectionStringName="Nowthwin"
?????????? generatedNamespace="Nowthwin"/>
??? </providers>
? </SubSonicService>
?
</configuration>
??? 4、在vs中工具菜單中選擇 “工具” -> “外部工具” 命令,定義一個(gè)外部工具菜單項(xiàng),
?????????? 標(biāo)題為SubSonic DAL(也可以自己命名),
命令為SubSonic文件夾的中命令行工具sonic.exe的路徑,
參數(shù)為:generate /out Generated(生成后的路徑為當(dāng)前路徑下的Generated文件夾。),
初始目錄為:$(ProjectDir),
并勾選“使用命令窗口”和“提示輸入?yún)?shù)”兩個(gè)選項(xiàng),點(diǎn)確定。
???
?5、此時(shí)vs的工具菜單多了一項(xiàng)“SubSonic DAL命令,單擊,然后確定。
??? 6、執(zhí)行完畢,在Generated文件夾中會(huì)生成你設(shè)定的數(shù)據(jù)庫(kù)的類(lèi)庫(kù)文件,包括表、視圖、存儲(chǔ)過(guò)程的c#包裝。如果出現(xiàn)錯(cuò)誤,一般是因?yàn)閿?shù)據(jù)庫(kù)連接串有問(wèn)題,請(qǐng)仔細(xì)檢查。
??? 7、把Generated文件夾下的所有文件包含到工程中,然后編譯,生成類(lèi)庫(kù)。至此,全部工作完成,可以在項(xiàng)目中使用ORM操作您的數(shù)據(jù)庫(kù)了,完全強(qiáng)類(lèi)型化的數(shù)據(jù)庫(kù)操作方法。
??? 8、在項(xiàng)目中使用這個(gè)類(lèi)庫(kù)的時(shí)候,需要在web.config中把上面的app.config中的設(shè)置,復(fù)制到對(duì)應(yīng)的小節(jié)中。
??? 9、數(shù)據(jù)庫(kù)修改后,只要重新生成一次類(lèi)庫(kù)即可,這可能就是所謂的零數(shù)據(jù)訪(fǎng)問(wèn)層代碼實(shí)現(xiàn)吧,總之是非常方便。
??
?
以Northwind數(shù)據(jù)庫(kù)為例
?
/聯(lián)合查詢(xún)
DataTable dt = new Select(Product.Columns.ProductName, Category.Columns.CategoryName,Supplier.Columns.CompanyName).From(Product.Schema).InnerJoin(Category.Schema).InnerJoin(Supplier.Schema).ExecuteDataSet().Tables[0];
?
______________________________________________________________________________
//子查詢(xún)
DataSet dt = new Select().From(Product.Schema)
??? .Where("productid").In(1, 2, 3, 4, 5)ExeCuteDataSet();
?
DataSet dt = new Select().From(Product.Schema).Where(Product.Columns.CategoryID)
??????????? .In(
??????????? new Select("categoryID").From(Category.Schema).Where(Category.Columns.CategoryName).IsEqualTo("Produce"))
??????????? .ExecuteDataSet() ;
______________________________________________________________________________________________
//聚合函數(shù)使用
?
double result = new
??? Select(Aggregate.Sum("UnitPrice*Quantity", "ProductSales"))
??? .From(OrderDetail.Schema)
??? .ExecuteScalar<double>();
____________________________
總結(jié)
以上是生活随笔為你收集整理的使用SubSonic生成数据访问层步骤的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt开发之路——基于RedfishAPI
- 下一篇: 交流异步电机矢量控制(一)——电机模型及