今天来给大家分享一个好用的轻型的.net框架的ORM——PetaPoco

本着快速上手的原则,我们通过和EF对比,让大家能快速使用PetaPoco

PetaPoco大家可能没有听说过,但大家一定听说过或者用过EF吧,其实,PetaPoco和EF是一个性质的东西,只不过PetaPoco相对于EF而言较为轻量级的。

与EF一样,我们可以再NuGet中将其引用安装进来。

安装完毕之后,我们可以就可以在解决方案中看到多个文件夹。

注:ExModels这个文件夹是我自己加上的,不是自己生成的。

在EF中,分为好几种模式,如:代码优先(Code First),数据库优先(DataBase First) 等等……在PetaPoco中只有与EF类似的数据库优先即DataBase First(可能还有其他模式,但笔者没有深入研究)。

我们来说一下PetaPoco中几个关键的文件

在Generated文件有一个Database.tt的文件,他下面还有个Database.cs的文件,这两个文件,是PetaPoco'数据库优先模式'的关键文件。本着快速上手的原则,其他文件就不做一一说明了。

下面我们来看一下如何在一个项目中来快速使用PetaPoco。

第一步:在App.config或Web.config 文件中配置数据库连接字符串。

第二步:配置Database.tt文件。

打开Database.tt文件,给大家说一下几个比较重要的配置属性,没有提到的,可以用他们给的默认值。

上面标注的就是几个在项目中需要用到的比较重要的配置属性,还有一些配置属性没有做一一的说明,小伙伴们可以自己研究一下,或者去网上查一下资料。

点击保存(Ctrl+S),则PetaPoco会自动关联相应的数据库,给我们生成每个表的表实例,表明即为实例的类名,表字段名即为实例类的属性名,是不是感觉和EF的DataBase First 很类似啊。

PetaPoco将自动生成的类实例保存到了PetaPoco.cs文件中了。我们可以在这个文件中查看。如果遇到数据库数据结构发生变化,我们可以在Database.tt中重新点击保存(Ctrl+S)一下,即可更新了。

PetaPoco配置完了,下面就可以真枪实弹的来用它进行对数据库的一系列操作了。

根据上面的Database.tt的配置,我们生成的Database.cs文件中,命名空间和类名如下:

下面我用简单的几个小例子来给大家介绍一下PetaPoco操作数据库的一些方法函数。

1、初始化

   var db = new AntManManagerDB();
  var db = new AntManManagerDB("AntManManager");

上述两行是常用的初始化Database的代码,还有很多初始化的重载,大家可以自己看一下。

2、Insert

 //message  是PetaPoco根据数据库表生成的类实例
var db = new AntManManagerDB();
db.Insert(message);
db.Execute("Insert语句");

3、Delete

//message 是PetaPoco根据数据库表生成的类实例
var db = new AntManManagerDB();
db.Delete(message)
db.Execute("Delete语句");

4、Update

//message 是PetaPoco根据数据库表生成的类实例
var db = new AntManManagerDB();
db.Update(message)
db.Execute("Update语句");

5、Select

//单条查询
var a=db.SingleOrDefault<Message>("SELECT * FROM articles WHERE article_id=@0", );
//分页查询,返回Page类实例,其属性中,有很多你需要的值哦
var result=db.Page<Message>(, , // <-- 第几页,每页几条
"SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");
// 查询所有数据
foreach (var a in db.Query<Message>("SELECT * FROM message"))
{
Console.WriteLine("{0} - {1}", a.message_id, a.title);
}
//查询所有数据
var a=db.Fetch<Message>("SELECT * FROM message")

6、事务

 var db = new AntManManagerDB();
db.BeginTransaction();
try
{
foreach (var message in listMessage)
{
db.Insert(message);
}
db.CompleteTransaction();
return true;
}
catch (Exception e)
{
db.AbortTransaction();
throw new Exception(e.Message);
}

常用的数据库操作就这些了。

挺好用的,拿出来分享一下。

PetaPoco 快速上手的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...

  3. [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手

    原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...

  4. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  5. 快速上手seajs——简单易用Seajs

    快速上手seajs——简单易用Seajs   原文  http://www.cnblogs.com/xjchenhao/p/4021775.html 主题 SeaJS 简易手册 http://yslo ...

  6. Git版本控制Windows版快速上手

    说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  7. Objective-C快速上手

    最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...

  8. Netron开发快速上手(二):Netron序列化

    Netron是一个C#开源图形库,可以帮助开发人员开发出类似Visio的作图软件.本文继前文”Netron开发快速上手(一)“讨论如何利用Netron里的序列化功能快速保存自己开发的图形对象. 一个用 ...

  9. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

随机推荐

  1. B-JUI 实践 之 带搜索与编辑的Datagrid

    使用B-JUI 1.31版本 DataGrid 页直接上代码: <div class="bjui-pageHeader" style="background-col ...

  2. Spring util-namespace下标签相关操作

    java代码 package com.stono.sprtest; import java.util.List; import java.util.Map; import java.util.Set; ...

  3. jquery 全选 全不选 事件绑定

    <td width="82%" colspan="3"><input type="checkbox" id="a ...

  4. SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解

        在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务.我们先来看一下上个案例中的基本配置文件示例: < ...

  5. Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别

    转: http://blog.csdn.net/it_man/article/details/5074371 Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之 ...

  6. ubuntu 16.04 的64位 安装arm-none-linux-gnueabi-gcc的步骤和问题解决

    一 首先下载arm-none-linux-gnueabi-gcc交叉编译器,根据不同的需求请在网址: https://launchpad.net/gcc-arm-embedded/+download ...

  7. Linux Platform驱动模型(一)-设备信息

    我在Linux字符设备驱动框架一文中简单介绍了Linux字符设备编程模型,在那个模型中,只要应用程序open()了相应的设备文件,就可以使用ioctl通过驱动程序来控制我们的硬件,这种模型直观,但是从 ...

  8. 打开phpmyadmin显示高级功能尚未完全设置部分功能未激活

    问题:老师,打开phpmyadmin显示高级功能尚未完全设置部分功能未激活,应该如何解决? 这是前一阵子学生问过我的一个问题,今天我就在博客里解答你的疑问吧. 总共三步可以搞定 1.导入相关文件到数据 ...

  9. 拆开Ceph看队列和线程

    作者:吴香伟 发表于 2017/01/08 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 我上小学时家离学校很远,家在某某山脚,学校在镇里.每周回家一趟,周五放 ...

  10. 一个web应用的诞生--数据存储

    上一章实现了登录的部分功能,之所以说是部分功能,是因为用户名和密码写成固定值肯定是不可以的,一个整体的功能,至少需要注册,登录,密码修改等,这就需要提供一个把这些值存储到数据库的能力. 当前的主流数据 ...