本篇才真正是XCode教程第一篇。《速覽》是爲了以最簡潔的語言最短小的篇幅去吸引開發者;《簡介》則是對XCode組件和XCode開發模式的一個總體介紹,讓開發者從宏觀的角度去理解XCode;《共舞》把XCode提到了一個新的高度,讓開發者感覺到它的貴族血統! html
先拋出三篇來吸引人,再出《動手》,其實就是吊人胃口。若是到這裏你尚未想試一試XCode的念頭衝動,好吧,我認可是個人失敗,不過你能夠欺騙我,可別欺騙你本身! 數據庫
XCode開發模式建議先有數據庫再有實體模型,而後藉助代碼生成器生成實體代碼;固然你要反過來先作實體模型也是能夠的,XCode之下的實體,支持反向生成數據庫結構。 架構
下面以《速覽》中的UserMember爲例,創建數據表: ide
數據表名: 用戶 (UserMember) 性能
中文名學習 |
英文名測試 |
數據類型網站 |
大小this |
是否主鍵編碼 |
是否惟一 |
是否必填 |
默認值 |
編號 |
ID |
Int32 |
10 |
是 |
是 |
是 |
|
帳號 |
Account |
String |
50 |
|
|
|
|
顯示名 |
DisplayName |
String |
50 |
|
|
|
|
數據庫命名規範:
² 名稱必須使用通俗易懂的英文單詞全拼,經常使用的縮略詞(如ID)除外
² 使用駝峯命名規則,每一個單詞首字母大寫,其它小寫
² 名稱必須簡潔明瞭,不要加多餘的前綴(如表名前加tbl),字段名也不要加表名前綴
² 不得使用SQL關鍵字或C#關鍵字做爲表名或字段名
² 布爾型字段名稱必須是IsAbb的形式
² 字符串類型統一使用nvarchar,大文本使用ntext,除非特殊狀況,不然不用其它文本類型
² 建議給每張表創建一個自增的ID字段並做爲主鍵,以利於數據分頁管理
² 建議給每張表和每一個字段加上說明
使用代碼生成器生成代碼(先看代碼,待會講過程):
代碼很少,分爲屬性、索引器和嵌套類三大塊,其中後兩塊還不是必須的,因此即便是手工編碼也不會太麻煩。
所使用的代碼生成器XCoder,是一個基於XCode的模版標籤替換生成器。XCode提供數據庫結構信息,用戶設計模版,XCoder根據模版標籤進行替換。上面的代碼還有數據字典表格,都是XCoder生成的,只是所使用的模版不一樣而已。有興趣的朋友徹底能夠定製本身的代碼生成器,DAL類的Tables屬性能夠取得該鏈接的表架構信息,如DAL.Create("Test").Tables能夠取得鏈接名爲Test的數據庫的架構信息。
XCoder的使用很簡單,打開配置文件XCoder.exe.config,增長一個鏈接字符串:
運行XCoder.exe,能夠在鏈接下拉框選擇鏈接字符串
點擊鏈接,列出該庫全部表和視圖
設置命名空間、輸出目錄和鏈接名等信息,選擇「數據」模版,點擊生成
由於XCode是充血模型,使用的時候是不須要指定數據庫鏈接的,因此實體類裏面默認指定鏈接名。
XCode模型追求簡單實用,因此沒有區分數據層和業務層。可是XCode實體類有數據類和業務類的說法,剛纔上面的「數據」模版生成的就是數據類,下面生成業務類
能夠看出,數據類和業務類其實就是同一類,只不過使用了分部類partial,把一個類分拆到兩個文件裏面去。數據類記錄表結構信息,基本上依靠於生成;業務類第一次生成後只有一些註釋,用於引導開發者如何實現本身想要的功能。業務代碼等人工編寫的代碼,都要求卸載業務類裏面,當表結構改變須要從新生成代碼時,僅生成數據類便可,人工編寫的代碼保留在業務類中,不至於被覆蓋。
XCoder在輸出目錄生成了代碼文件,複製到vs裏面去
再看看例子代碼
編譯,提示user = UserMember.FindByAccount("asdf")這句報錯,沒有FindByAccout方法。忘了這是我手工寫的了
這個方法是根據帳號查找用戶。通常建議,FindByXxxx表示根據某個條件查詢一個對象,FindAllByXxxx表示查詢符合某個條件的全部對象的集合。
再次編譯,經過。運行
又忘了,咱們尚未設置鏈接字符串呢。增長鏈接字符串
這裏要求鏈接名必須是Test,由於生成數據類的時候,指定了鏈接名爲Test,因此纔有剛纔的異常,提示設置Test鏈接字符串。後面就是標準的鏈接字符串了,固然,這個時候是能夠修改成Access、Oracle、MySql等鏈接字符串的,儘管咱們開始的時候是在SqlServer中創建表結構。由於實體類已經創建完成,它與具體數據庫無關,只有在運行時探測是哪種數據庫,再根據狀況生成相應的查詢/操做SQL。
XCode除了能獲取數據庫架構信息外,還能設置數據庫架構,也就是可以根據實體類自動進行建表或者修改表結構。因此,不用擔憂修改鏈接字符串指向別的數據庫後,會由於沒有數據表而報錯。這個小功能有個好處,好比生產環境是Oracle數據庫,而開發環境比較差,跑不起Oracle,徹底能夠在開發環境用Access進行設計,部署到生成環境再修改鏈接字符串,XCode會盡其所能的屏蔽數據庫操做差別。
打開XCode的OrmDebug開關(用於輸出SQL語句),再次運行
跟上面的代碼進行比對,能夠加深理解。OrmDebug開關對於學習XCode和解決問題很是有用。
上面是控制檯的例子,下面看看Web的例子。
在生成實體類代碼的時候,能夠看到還有兩個模版「列表頁」和「表單」,取消「中文文件名」選擇,分別生成這兩個模版的代碼。新建一個網站,把它們複製進去
設置鏈接字符串,預覽UserMember.aspx
回到剛纔的控制檯代碼,咱們另外寫一段插入測試數據的代碼
這段代碼將會向數據庫插入176行數據。刷新UserMember.aspx頁面
列表顯示、分頁、排序、編輯、刪除等功能都有了。
咱們對這個頁面作一點修改,添加一個到UserMemberForm.aspx的連接,而且把GridView裏面的帳號列改成超連接,也連接到UserMemberForm.aspx,而且帶上ID做爲參數。
點擊「添加用戶」
添加一個用戶
點擊帳號aaa,進入表單編輯頁面,注意地址欄的ID=179
又一次,咱們沒有編寫代碼!
其實這些都是一些很是簡單的功能,列表頁就是GridView+ObjectDataSource +實體類,表單頁就是FormView+ObjectDataSource+實體類,沒有傳遞ID的時候爲添加狀態。
Web的例子就到這裏,詳細的用法能夠回過頭看看《與ObjectDataSource共舞》,裏面提到的批量生產正是本篇所使用的代碼生成器生成列表頁和表單頁。
大石頭
新生命開發團隊
2010-09-07 03:57
做者: 大石頭 發表於 2010-09-15 07:42 原文連接
最新新聞:
· 是否該讓開發人員跟客戶直接交流?(2010-12-21 07:53)
· 亞馬遜副總裁跳槽Groupon任CFO(2010-12-21 07:50)
· Gmail語音服務將延長至2011年末(2010-12-21 07:49)
· AOL收購我的檔案網站About.me(2010-12-21 07:48)
· AT&T 19.25億美圓購入高通 700MHz 低頻頻譜(2010-12-21 07:42)
編輯推薦:Mono又更新了
網站導航:博客園首頁