关于PetaPoco的T4模板使用

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>

 

原文地址:https://www.cnblogs.com/songshuai/p/5607570.html