天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

小巧優美的ORM框架-doodads入門指南

  關于.NET下的ORM框架,大家最為耳熟的可能就是NHibernate了,當然,很多公司正在使用自己開發的ORM框架,筆者至少見過3家不同公司的ORM框架,其實都是大同小異,借助于codesmith、mygeneration等代碼生成工具,自己開發一個ORM框架也不是什么難事,關鍵的問題是,你能不能設計出代碼優美簡潔、功能靈活、定制方便以及部署容易的ORM框架。

  我去年開始熱衷NHibernate(與其說熱衷,不如說是迷信,因為后來越來越多的證據證明,公司自己的那套用了幾年的使用Excel生成實體類的ORM小框架更加適合快速開發,并且靈活易定制),因為當時很多人討論NH,有的公司招聘的時候也說會NH優先,當時花了幾個小時才配置成功,又是搞codesmith的破解版,又是生成xml model,并且對其繁雜的關系機制感到恐懼,比如外鍵的配置,視圖的配置,而我更習慣在數據庫中把關系弄好,建立表、視圖、約束、索引和存儲過程,而不想把這些事情交給NHibernate來做,但是它卻功能太強大,什么都愿意為你做,什么都能做。另外我感覺它封裝的很深,我有時候不知道他從數據庫加載了多少條記錄,存儲在哪里,如果再討論它的緩存機制,更加令人頭疼?

  為什么沒有一種部署容易、代碼優美、功能不強但是可以靈活定制、封裝的恰到好處、輕量級的ORM呢?這個問題一直殘繞在我心中,直到我使用了my generation以下簡稱為mg,為什么我會嘗試使用mg呢,是因為它開源而且免費,而且更容易上手)自帶的doodads,當時覺得這個名字很奇怪晦澀,因此想當然地認為這套框架肯定和它的名字一樣令人費解,不過抱著試試看的態度我深入了解了doodads,發現它的代碼真的是很簡單,很優美,貌似功能也不錯,且看如下的代碼:

// 獲取并修改某條記錄
Employees emps = new Employees();
if(emps.LoadByPrimaryKey(42))
{
    emps.LastName
= "Just Got Married";
    emps.Save();
}

// 插入新紀錄
Employees emps = new Employees();
emps.AddNew();
emps.FirstName
= "Mr.";
emps.LastName
= "dOOdad";
emps.Save();

// 插入新紀錄后獲得新紀錄的主鍵
int i = emps.EmployeeID;

 這是多么簡潔易讀的、令人親切的代碼!

   接下來我將重點介紹doodads的基礎知識,按照官方的說法,doodads支持如下的數據庫系統:Microsoft SQLOracle, Firebird, Access, PostgreSQL, VistaDB, SQLite, and MySQL ,我在oracle 10g以及sql server 2000上有過成功的應用,但是在sql 2005下使用mg生成出來的代碼編譯通不過,不過你可以手動修改,添加合適的ado.NET類型即可(按照編譯出錯的提示)。

一、doodads的demo

  首先請安裝MyGeneration 1.3或以上版本,這是開源免費的,您無需為注冊碼焦頭爛額,下載地址是:http://www.mygenerationsoftware.com/,下載之后安裝,然后在安裝目錄下會找到如下的項目:

使用vs2005或更高版本打開“dOOdad_Demo_2005.sln”,注意您是否安裝了sql server2000,因為這個demo用到了Northwind數據庫,嘗試運行該項目,若報數據庫連接字符串需要修改,請修改web.config中的appSettings.dbConnection節,運行成功后出現如下的畫面:

現在我們再來仔細看下一個典型的doodads項目的結構,是的,就是這么簡單:

二、自己搭建一個基于doodads的項目

  1. 首先,您必須準備一個數據庫,本文的例子是基于sql server 2000的,數據庫中至少準備一個表,當然有視圖或者存儲過程可以使您體驗到更多的東西
  2. 現在建立一個ASP.NET web應用程序,添加對“E:/Program Files/MyGeneration13/Architectures/dOOdads/CSharp/dOOdad_Demo/dOOdad_Demo_2005.csproj”(當然您需要修改這個地址為您的電腦上的mg安裝路徑)的引用,并且在web.config中的appSettings下建立dbConnection節,value就是您的數據庫連接字符串
  3. 建立App_Code/DAL文件夾,或者您新建一個名為DAL的類庫也行;
  4. (可選)建立App_Code/BLL文件夾,或者新建一個名為BLL的類庫也行;
  5. 現在啟動mg,打開并啟動如下的模板(紅框內的模板是必須的):

    這里四個模板分別表示:
    Invoke a stored procedure - 生成調用存儲過程的c#類,若有則生成
    Business Entity - 您可以理解為生成表的操作類,這是最基本的類
    Business View-視圖操作類,如果您有視圖則生成
    Concrete Class-聚合類(請饒恕我的翻譯),這里生成的類會對應繼承是Business Entity中的類,可以理解為BLL類,可以將業務邏輯和DAL隔開,

    生成的Business Entity類或stored procedure或Business view請放到剛才建立的DAL文件夾中或者DAL類庫中
    (若有)生成的Concrete Class請放到BLL文件夾或BLL類庫
  6. 當然還需要一些引用或其他配置之類的,比如您的web app項目要引用DAL類庫和BLL類庫,視您的項目搭建情況而定
  7. 現在編譯一下,是不是成功了!
  8. 編譯成功了,不代表能夠運行成功,如果您嘗試執行類似如下的語句將會報錯:
    Employees emps = new Employees();
    emps.LoadByPrimaryKey(42);
    錯誤原因是找不到“proc_您的表名LoadByPrimaryKey”存儲過程”,于是我們發現了一個doodads的新特點,所有的CRUD操作都是通過存儲過程實現的,如果您喜歡在數據庫中做更多的事情,這是一個讓您喜歡doodads的理由
  9. 生成CRUD存儲過程,現在打開mg中的如下模板:


    運行后會為您選中的所有表分別生成CRUD(create、read、update、delete)存儲過程,包括:
    '  1) proc[表名]LoadByPrimaryKey  (如果至少有一個主鍵)
    '  2) proc[表名]LoadAll(加載符合條件的所有記錄)
    '  3) proc[表名]Update
    '  4) proc[表名]Insert
    '  5) proc[表名]Delete
    注意:現在生成的是sql文件,而不再是cs代碼,請把生成的sql文件在數據庫中執行生成相應的procedure
  10. 現在再運行本項目,不會再提示找不到存儲過程了吧!

 總結:個人認為doodads的特點有以下幾點:

  1. 基于存儲過程,性能更卓越,靈活性更強
  2. 部署非常簡單,引用dll生成dal類即可,不像nhibernate那么多配置;簡單的基于doodads的項目僅僅需要幾個business entity即可
  3. 封裝的比較淺,您可以很清晰地得知doodads在干什么
  4. 提供的接口優美簡潔

下一節將講述doodads的主要接口的用法,這里提供一份指南下載,英文版的pdf格式:/Files/xiehuiqi220/doodadsQuickRefCSharp.pdf

 

NET技術小巧優美的ORM框架-doodads入門指南,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产麻豆精品人妻无码A片 国产麻豆精品久久一二三 国产麻豆精品传媒AV国产在线 | 女子初尝黑人巨嗷嗷叫 | 久久只精品99品免费久 | 三级黄色在线视频中文 | 日本无码人妻精品一区二区视频 | 日本人bbwbbwbbwbbw| 久久精品免费看网站 | 女人久久WWW免费人成看片 | 混乱家庭电影完整版在线看 | 琪琪色原网20岁以下热热色原网站 | 无限资源网免费看 | 人妻体内射精一区二区 | 日本阿v片在线播放免费 | 精品熟女少妇AV久久免费A片 | 午夜宅宅伦电影网中文字幕 | 色一伦一情一区二区三区 | 亚洲精品视频久久 | 久热久热精品在线观看 | 亚洲精品喷白浆在线观看 | 肉蒲团从国内封禁到日本成经典 | 亚洲欧美精品无码大片在线观看 | 浪小辉军警服务员VIDEOS | 老师小扫货水能么多叫出来 | 精品麻豆一卡2卡三卡4卡乱码 | 蝴蝶中文综合娱乐网2 | 97人人看碰人免费公开视频 | 色老板美国在线观看 | 国内精品不卡一区二区三区 | 香蕉久久一区二区三区啪啪 | 一本之道高清视频在线观看 | 成年黄网站免费大全毛片 | 日本粉嫩学生毛绒绒 | 国产电影无码午夜在线播放 | 欧美日韩精品一区二区三区高清视频 | 久久亚洲这里只有精品18 | 看 视频一一级毛片 | 成人免费视频在线 | 免费毛片观看 | 欧美精品AV无码一区二区 | 精品久久久久中文字幕日本 | 久久国产av偷拍在线 |