PetaPoco初體驗(轉)

PetaPoco初體驗(轉)

?

PetaPoco初體驗(轉)

大部分轉自:?http://landyer.com/archives/138

PetaPoco?C#微型ORM框架,基本無需配置,僅由單個cs文件構成,支持.net3.5 .net4.0。

截稿時PetaPoco的官方最新版本為5.0.1。我不采用5.0.1版本,因為我用的是.net3.5,而5.0.1的版本中用到了一個類System.Tuple,這個類是從.net4.0才開始有的。(當然也可以自己實現這個類,不過像我這樣的初學者還是算了吧)。

NuGet圖形界面中默認列出的只有最新版本,一裝就是5.0.1,?那就是使用NuGet命令行。

1.依次打開《工具》《庫程序包管理器》《程序包管理器控制臺》

2.敲入命令對可用的版本進行查詢get-package –listavailable –allversion –filter petapoco,如圖

3.敲入命令進行安裝install-package petapoco –version 4.0.3

?

配置PetaPoco

現在又遇到一個問題,使用Ctrl+Shift+B編譯項目的時候報錯,說dynamic神馬的不存在。

這是因為Dynamic也是.net4.0的。PetaPoco官方提供了一個編譯時的選項來開啟&關閉對dynamic的支持。

下面來進行編譯選項的設置:

  1. 在項目上《右鍵》《屬性》
  2. 選擇左側tab的第二項《生成》,在《條件編譯符號》中輸入PETAPOCO_NO_DYNAMIC
  3. 保存,再次Ctrl+Shift+B,進行編譯。這次就OK了。

?

配置PetaPoco T4模板

  1. 打開Database.tt文件

    ConnectionStringName = "WorkDemo";            // Uses last connection string in config if not specifiedNamespace = "WorkDemo.Tests.Models";RepoName = "PPUtils";            //輔助類的名字

?

PetaPoco使用示例

? ? 一對多 和 多對一

  • 為Account增加一個額外的屬性AccountUsers

  • 為Account_User增加一個額外的屬性Account
  • 將Account和Account_User進行關聯
復制代碼
    public partial class Account{[PetaPoco.Ignore]public List<Account_User> AccountUsers { get; set; } }public partial class Account_User{[PetaPoco.Ignore]public Account Account { get; set; }}//public class UserAccountRelator{private Dictionary<long, Account> accounts = new Dictionary<long, Account>();public Account_User MapIt(Account account, Account_User user){Account accountExisting;if (accounts.TryGetValue(account.Id, out accountExisting)){account = accountExisting;}elseaccounts.Add(account.Id, account);user.Account = account;return user;}}//public class AccountUserRelator{public Account current;public Account MapIt(Account account, Account_User user){if (account == null)return current;if (current != null && current.Id == account.Id){current.AccountUsers.Add(user);return null;}var prev = current;current = account;current.AccountUsers = new List<Account_User>();current.AccountUsers.Add(user);return prev;}}
復制代碼

? ? 查詢:

復制代碼
            var users = db.Fetch<Account, Account_User, Account_User>(new UserAccountRelator().MapIt,"select * from Account A left join Account_User AU on AU.AccountId=A.Id ");foreach (Account_User user in users){Console.WriteLine("{0} - {1}", user.Id, user.UserName);}var accounts = db.Fetch<Account, Account_User, Account>(new AccountUserRelator().MapIt,"select * from Account A left join Account_User AU on AU.AccountId=A.Id ");foreach (Account acc in accounts){Console.WriteLine("{0} - {1}", acc.Id, acc.Name);}
復制代碼

?

好文要頂?關注我?收藏該文??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458447.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS當中的設計模式

代理模式 應用場景&#xff1a;當一個類的某些功能需要由別的類來實現&#xff0c;但是又不確定具體會是哪個類實現。 優勢&#xff1a;解耦合 敏捷原則&#xff1a;開放-封閉原則 實例&#xff1a;tableview的 數據源delegate&#xff0c;通過和protocol的配合&#xff0c…

c#的dllimport使用方法詳解

DllImport是System.Runtime.InteropServices命名空間下的一個屬性類&#xff0c;其功能是提供從非托管DLL&#xff08;托管/非托管是微軟的.net framework中特有的概念&#xff0c;其中&#xff0c;非托管代碼也叫本地&#xff08;native&#xff09;代碼。與Java中的機制類似&…

each函數循環數據表示列舉,列舉循環的時候添加dom的方法

var dotBox $(#bannerNum);var item <li></li>;var itemSize $(#bannerBack p).length;var dotBoxWidth itemSize*24;$(#bannerBack p).each(function () { dotBox.append(<li></li>); dotBox.find(li).eq(0).addClass(current);});這里要根…

使用lxml代替beautifulsoup

深入使用過lxml的都會深深地喜歡上它,雖然BeautifulSoup很流行,但是深入了解lxml后,你就再也不會使用bs了 我覺得beautifulsoup不好用,速度也慢(雖然可以使用lxml作為解析器了).另外soup.find_all這種簡直就是手工時代的操作(很多人使用find find_all這幾個函數, 其實它們使用起…

QT調用dll且進入DLL src code調試

qt應用程序AA.exe調用qt寫的BB.DLL時&#xff0c;進入BB.DLL src code調試 1、debug生成AA.exe 2、將debug生成的AA.exe整包debug folder放到BB.dll的debug生成的文件夾中 3、設置BB.dll這個project&#xff1a;項目----運行-----Executable中選擇BB.dll的debug文件夾中的AA.ex…

php安裝編譯時 configure: error: Cannot find OpenSSL's evp.h

yum install error: protected multilib versions errorsudo yum downgrade openssl 降級sudo yum install openssl-devel 另外參考yum install -y ncurses-devel yum install openssl openssl-develyum install openssl openssl-devel --setoptprotected_multilibfalse ln -s …

laravel項目中css樣式表的背景圖片不顯示

剛學laravel&#xff0c;遇到了很多坑&#xff0c;感覺laravel是挺強大的。 建好后臺項目&#xff0c;奈何css樣式表的背景圖片不顯示 .mainhd {background: url(../images/sky/body_bg.png) repeat-x 0px 0px; } 按理上面的寫法沒錯&#xff0c;因為是從別的后臺搬過來的&…

KVC KVO

1、KVC&#xff0c;即是指 NSKeyValueCoding&#xff0c;一個非正式的Protocol&#xff0c;提供一種機制來間接訪問對象的屬性。而不是通過調用Setter、Getter方法訪問。KVO 就是基于 KVC 實現的關鍵技術之一。 Demo&#xff1a; interface myPerson : NSObject { …

VS2010中 C++創建DLL圖解

一、DLL的創建 創建項目: Win32->Win32項目&#xff0c;名稱&#xff1a;MyDLL 選擇DLL (D) ->完成. 1、新建頭文件testdll.htestdll.h代碼如下&#xff1a;#ifndef TestDll_H_#define TestDll_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimp…

js理解 call( ) | apply( ) | caller( ) | callee( )

被js的這幾個方法搞的this暈頭轉向&#xff0c;下定決心搞清楚&#xff1b;1、call( )和apply( ):兩者都可以將函數綁定到另外一個對象上去運行&#xff0c;只是參數的傳遞方式不同&#xff0c;兩者都可以使當前函數擁有另一個對象的屬性和方法&#xff0c;實現js下的繼承&…

上傳SVN丟失.a文件的問題

iOS項目上傳到svn中&#xff0c;.a文件丟失 用Cornerstone工具&#xff0c;解決這個問題 1.打開Cornerstone左上角&#xff0c;點Cornerstone->Preferences->Subversion 2.Global lgnores下面有一個Use default global ignores 默認這里方框中會打鉤&#xff08;這就是.a…

使用公用表表達式的遞歸查詢

微軟從SQL2005起引入了CTE(Common Table Expression)以強化T-SQL。公用表表達式 (CTE) 具有一個重要的長處&#xff0c;那就是可以引用其自身。從而創建遞歸 CTE。遞歸 CTE 是一個反復運行初始 CTE 以返回數據子集直到獲取完整結果集的公用表表達式。 當某個查詢引用遞歸 CTE 時…

C#委托實現C++ Dll中的回調函數

from:https://blog.csdn.net/ferrycooper/article/details/63261771很多的Dll都是C和C寫的&#xff0c;那么如果C#想要調用Dll中的函數怎么辦&#xff0c;尤其是Dll函數其中一個參數是函數指針的&#xff0c;即里面有回掉函數的用C#怎么實現&#xff1f; C中的回掉函數在C#中有…

安裝Birt方法

安裝BIRT 方法&#xff1a; 博客地址&#xff1a;http://www.mamicode.com/info-detail-850588.html 注意&#xff1a;在 Install new Software 中輸入地址&#xff1a;http://download.eclipse.org/birt/update-site/4.2-interim 看好了 出來的四項要全部選中 &#xff0c;然后…

iOS NSString和NSDate轉換

后臺返回的時間字符串不是標準的時間而是計算機時間的時候&#xff0c;我們需要將它們轉換為標準時間&#xff0c;再進行轉換。 //字符串轉為時間&#xff0c;時間格式自己定 NSString * time "1501776000"; //時間字符串 NSInteger num [time integerValue]; …

15個最好的HTML5前端響應式框架(2014)

文中的多個框架基于SASS創建&#xff0c;SCSS是一種比LESS更簡潔的樣式表編程語言&#xff0c;它能夠編繹成CSS&#xff0c;可復用CSS代碼&#xff0c;聲明變量&#xff0c;甚至是函數&#xff0c;類Ruby/Python的語法。參見&#xff1a; LESS vs SASS&#xff1f;選擇哪種CSS樣…

DLL導出類和導出函數

from:https://blog.csdn.net/goodluckmt/article/details/526912971、動態庫DLL中的類或者函數有時候要被其他的庫調用&#xff0c;因此需要被其他庫調用的類或者函數需要進行導出。 2、首先編寫需要導出的DLL&#xff0c;新建一個工程設置應用程序類型為DLL3、類的代碼如下 頭…

Nginx做web服務器linux內核參數優化

Nginx做web服務器linux內核參數優化Nginx提供web服務時Linux內核參數調整是必不可少的&#xff0c;其中在優化方面就需要我們格外的注意。在下面就是對Linux內核參數優化的詳細介紹&#xff0c;希望大家有所收獲。關于Linux內核參數的優化&#xff1a;net.ipv4.tcp_max_tw_buck…

iOS系統發布時間

發布日期 版本編號 更改2017年9月12日 iOS11 GM seed2017年6月19日 iOS10.3.32016年11月9日 iOS10.2 Beta2 發布iOS10.2測試版版2016年11月1日 iOS10.2 Beta1 發布iOS10.2測試版版2016年10月25日 iOS10.1 發布iOS10.1正式版2016年9月22日 iOS10.1 Beta 發布iOS10.1測試版2016年…

Tomacat服務器的安裝和配置

一&#xff0c; Tomcat服務器的下載地址(Apache Tomcat的官網): http://tomcat.apache.org/download-70.cgi 這里為了穩定性安裝的版本為7.0. 截止目前版本已經發行到了9.0. 二&#xff0c; 解壓下載的壓縮包之后直接進入傻瓜式的安裝。   下載文件的全名&#xff1a; apach…