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.mzph.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…