前言
在剛開始使用中就碰到問題:按照官方的方法配置,總是不能編譯時自動生成資料通路層代碼(其中一種,也可使用指令行自己生成,下面介紹)。本文隻要介紹了這兩種配置subsonic的方法。
1.配置方法
自動在臨時檔案夾生成的官方方法如下:
(1)修改web.config
在web.config裡configuration節下面加入一下内容:
1
< configSections >
2
< section name ="SubSonicService" type ="SubSonic.SubSonicSection, SubSonic" requirePermission ="false" />
3
</ configSections >
4
< appSettings />
5
< connectionStrings >
6
< add name ="football" connectionString ="Data Source=ERICK;Initial Catalog=polan2;Persist Security Info=True;User ID=sa;Password=sa" providerName ="System.Data.SqlClient" />
7
</ connectionStrings >
8
< SubSonicService defaultProvider ="football" >
9
< providers >
10
< clear />
11
< add name ="football" type ="SubSonic.SqlDataProvider, SubSonic" connectionStringName ="football" generatedNamespace ="football" />
12
</ providers >
13
</ SubSonicService >
然後在system.web節内加入buildProviders配置節:
1
< compilation debug ="true" defaultLanguage ="C#" >
2
<!-- ########################## SubSonic Build Provider ############################### -->
3
<!-- This will NOT WORK in Medium Trust -->
4
<buildProviders>
5
<add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/>
6
</buildProviders>
7
< assemblies >
8
< add assembly ="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
9
</ assemblies >
web.config的設定結束。
(2)添加對subsonic.dll檔案的引用
右鍵項目--添加引用--浏覽
(3)在app_code檔案下加入subsonic.abp檔案
這裡subsonic.abp是根據buildProviders配置節裡面的extension=".abp"而來, .abp代表application build provider,目的是為了在編譯時自動生成資料通路層,這些代碼放在了架構的臨時檔案夾裡面。
(4)編譯之
我用的vs2008的webapplication,在上述三步後,發現vs2008依然不能找到我自己建立的命名空間以及相應的類,而且從編譯時間上也能斷定項目并沒有按正常情況自動建立資料通路層的類代碼。非常費解,今天又用vs2005 和2008分别對subsonic在website和webapplication下的配置進行了測試,發現上述方法隻能在vs2005下的website中正常使用,對于其他三個項目,則隻能使用另一種方法,IDE的外部工具:
(1)添加visual studio外部工具
打開vs2005或者2008,菜單-工具-外部工具,添加外部工具對話框如下:
指令行處找到subsonic的指令行工具(位于安裝檔案下);參數的最後一個空格後面的是要輸出的目錄(自己選擇);
(2)運作SubsonicTool外部工具
然後菜單-工具下就有一個subsonictool的工具按鈕,直接點選,就會彈出:
輸入相應的目錄,ok就能在generated檔案夾下生成一系列資料通路層的類代碼。結構如下:
注意:在webapplication項目中,不要将這些代碼直接生成在自己建立的app_code中(預設下沒有這個檔案夾),會出現依然找不到命名空間和相應類的問題,最好自己在項目下直接建一個Generated檔案夾作為放置資料通路層類代碼的目錄。
2.subsonic使用
這裡對它的使用就不做太多介紹,如果以後遇到一些問題,也會記下來分享。隻舉個簡單的例子:
在一個頁面中放置一個gridview,id為productGrid,在後置代碼pageload裡面寫入:
1
productGrid.DataSource = football.Product.FetchAll();
2
productGrid.DataBind(); 兩行代碼即可完成。Product是根據資料庫自動生成的代碼,真正項目中要想使用,必須要通過partial class的方法把這些類進行相應的擴充,留在以後再說。
3.結束語
本僅僅将我平時遇到的問題總結出來,主要是兩種配置方法,希望對你們有幫助。關于subsonic詳細資訊請到官方網站。 http://subsonicproject.com/
也歡迎給我留言或者發郵件讨論。