关于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 " #>
使用模板一般步骤:
- 这三个文件添加到您的C#项目(或使用的NuGet包)
- 请确保您有一个连接字符串和提供者的名称在您的app.config或web.config文件设置(见下面)
- 在Records.tt编辑的connectionStringName属性(即:从“jab”更改为您的连接字符串的名称)
- 保存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>
- NuGet - http://nuget.org/List/Packages/PetaPoco
- GitHub - https://github.com/toptensoftware/petapoco
- 原文-https://github.com/CollaboratingPlatypus/PetaPoco/wiki/T4-Template-Poco-Builder