PetaPoco是一款适用于.Net 和Mono的微小、快速、单文件的微型ORM。
PetaPoco介绍:http://www.cnblogs.com/youring2/archive/2012/06/04/2532130.html

PetaPoco做了最大改进,就是支持T4模板生成实体对象,以前我们写所有的POCO对象,很快会觉得乏味而且容易出错;现在好了,最新版PetaPoco支持利用T4模板自动根据数据库(包括SQL Server,SQL Server CE,MySQL,PostgreSQL和Oracle)的表生成映射的对象。

Git仓库包括三个文件(或者通过NUGet引用到项目中会自动生成“Models/Generated”文件夹)。

这些文件包括:

  • PetaPoco.Core.ttinclude - 包括所有的辅助函数读取数据库架构
  • PetaPoco.Generator.ttinclude - 它定义了将产生实际的模板
  • Database.tt - 包括各种设置,并包括其他两个ttinclude文件的模板本身。

Database.tt:

<#@ include file= " PetaPoco.Core.ttinclude " #>

 <#
// 基本设置
ConnectionStringName = " jab " ;//Web.Config或者App.Config中connectionStrings节点设置数据库连接名称
Namespace = ConnectionStringName;
DatabaseName = ConnectionStringName;
string RepoName = DatabaseName + " DB " ;
bool GenerateOperations = true ; // 数据库解析
var tables = LoadTables();
#> <#@ include file= " PetaPoco.Generator.ttinclude " #>

使用模板一般步骤:

  1. 这三个文件添加到您的C#项目(或使用的NuGet包)
  2. 请确保您有一个连接字符串和提供者的名称在您的app.config或web.config文件设置(见下面)
  3. 在Records.tt编辑的connectionStringName属性(即:从“jab”更改为您的连接字符串的名称)
  4. 保存Database.tt。

按照上面操作步骤,如果不出什么意外,会生产一个Database.cs文件,在里面能看到映射数据库表的实体对象及基本操作。

app.config或web.config的文件设置,根据自己系统数据库类型选择对应DbProviderFactories或connectionStrings。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
<remove invariant="Npgsql" />
<add name="PostgreSQL Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe"/>
<remove invariant="System.Data.SqlClient"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data"/>
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="mysql" connectionString="" providerName="MySql.Data.MySqlClient"/>
<add name="postgres" connectionString="" providerName="Npgsql"/>
<add name="sqlite" connectionString="" providerName="System.Data.SQLite"/>
<add name="mssql" connectionString="" providerName="System.Data.SqlClient"/>
<add name="mssqlce" connectionString="" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
</configuration>

关于PetaPoco的T4模板使用的更多相关文章

  1. PetaPoco T4模板修改生成实体

    PetaPoco T4 模板生成的实体类全部包含再一个.CS文件中.通过修改PetaPoco的T4模板,生成单文件实体. 1.生成单CS文件模板: SigleFile.ttinclude <#@ ...

  2. {T4模板}C# Net MVC+SqlServer=T4模板生成实体类并操作数据(DbHelper+DBManage)

    1.ConnectionString,数据库链接 Web.config <configuration> <connectionStrings> <!-- 数据库 SQL ...

  3. 使用T4模板生成不同部署环境下的配置文件

    在开发企业级应用的时候,通常会有不同的开发环境,比如有开发环境,测试环境,正式环境,生产环境等.在一份代码部署到不同环境的时候,不同环境的配置文件可能需要根据目标环境不同而不同.比如在开发环境中,数据 ...

  4. CSharpGL(12)用T4模板生成CSSL及其renderer代码

    CSharpGL(12)用T4模板生成CSSL及其renderer代码 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立 ...

  5. 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

    原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大, ...

  6. 从零开始编写自己的C#框架(13)——T4模板在逻辑层中的应用(二)

    最近这段时间特忙,公事私事,忙得有时都没时间打开电脑了,这两周只能尽量更新,以后再将章节补回来. 直接进入主题,通过上一章节,大家明白了怎么使用模板类编写T4模板,本章进的是一些简单技巧的应用 1.首 ...

  7. 从零开始编写自己的C#框架(12)——T4模板在逻辑层中的应用(一)(附源码)

    对于T4模板很多朋友都不太熟悉,它在项目开发中,会帮我们减轻很大的工作量,提升我们的开发效率,减少出错概率.所以学好T4模板的应用,对于开发人员来说是非常重要的. 园子里对于T4模板的介绍与资料已经太 ...

  8. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面

    前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...

  9. EF CodeFirst 使用T4模板 生成文件

    小编是个实用主义者,并没有深入的去理解T4的原理.只是根据自己的需求,在博客园里的前辈哪里找的资料,结合自己的理解,在项目中使用了T4模板. 最近的项目用了他,很方便,节省了不少代码量. 想利用T4做 ...

随机推荐

  1. ICTCLAS 汉语词性标注集

    以前使用jieba分词时,并没有注意到词性标注集到底包含哪些,刚好最近学习自然语言处理,涉及到分词以及词性标注,将ICTCLAS 词性标注集记录如下: ICTCLAS 汉语词性标注集 代码 名称 帮助 ...

  2. LintCode Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  3. 前台给后台传JSON字符串,后台解析并保存

    前台 function BMSure() { var DanWeiName = $("[id$='BusinessName']").val(); var Address = $(& ...

  4. Java笔记9-正则表达式

    提纲: 1.正则表达式 2.常见的异常 3.内部类------------------------------------------------------------------JDK 1.4以后 ...

  5. 转:对于服务器AdminServer, 与计算机Machine-0相关联的节点管理器无法访问

    控制台启动server时报"对于服务器server-1与计算机machin<!--StartFragment -->对于服务器AdminServer, 与计算机Machine-0 ...

  6. 【引】runtime全解析,P2:关于Class 和 MetaClass

    几个基本的概念: id,id的定义是,typedef struct objc_object { Class isa;} *id; id是指向struct objc_object的一个指针.这个意思是, ...

  7. 【python】Redis介绍及简单使用

    一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...

  8. CE 进程同步-事件

    事件(event)分为有名的和无名的,使用有名事件的时候,在不同进程中创建的同名事件,其实就是同一个,这样就可以在不同的进程中使用了.两个进程里面都要创建事件,事件名要一致. //进程1 HANDLE ...

  9. Eclipse

    001.自动注释  window--preferences--java--codeStyle--codeTemplate--comments //Types: /** *@author ${user} ...

  10. mysql 5.7修改密码

    关闭正在运行的 MySQL : [root@www.woai.it ~]# service mysql stop 运行 [root@www.woai.it ~]# mysqld_safe --skip ...