PocoClassGenerator 起始于 Necroskillz
的 POCO 生成器 Generate C# POCOs from SQL statement in LINQPad
功能
- 支持当前数据库所有表和视图生成 POCO 类代码
- 支持 Dapper.Contrib
- 支持多种关系型数据库:
sqlserver,oracle,mysql,postgresql
- 轻量且高速(仅需5秒即可生成100个表的代码)
- 针对每种数据库采用合适的方言表结构 SQL 进行查询
示例演示
- POCOGenerator 通过动态 SQL 生成类 | .NET Fiddle
- POCO Class Generator GenerateAllTables | .NET Fiddle
- DataTable POCO Class Generator | .NET Fiddle
快速上手
👇第一步:复制并粘贴 PocoClassGenerator.cs 代码到你的项目或 LINQPad。
或者通过 NuGet 安装。
PM> install-package PocoClassGenerator
👇第二步:使用连接对象调用 GenerateAllTables
并打印结果。
using (var connection = Connection)
{
Console.WriteLine(connection.GenerateAllTables());
}
支持 Dapper Contrib POCO 类
- 只需调用方法并传递
GeneratorBehavior.DapperContrib
using (var conn = GetConnection())
{
var result = conn.GenerateAllTables(GeneratorBehavior.DapperContrib);
Console.WriteLine(result);
}
在线演示 : POCO Dapper Contrib Class Generator GenerateAllTables | .NET Fiddle
生成注释
using (var conn = GetConnection())
{
var result = conn.GenerateAllTables(GeneratorBehavior.Comment);
Console.WriteLine(result);
}
生成视图
using (var conn = GetConnection())
{
var result = conn.GenerateAllTables(GeneratorBehavior.View);
Console.WriteLine(result);
}
同时生成视图、注释及 Dapper.Contrib
using (var conn = GetConnection())
{
var result = conn.GenerateAllTables(GeneratorBehavior.View | GeneratorBehavior.Comment | GeneratorBehavior.DapperContrib);
Console.WriteLine(result);
}
通过 SQL 生成单个类
- 生成单个类
using (var connection = Connection)
{
var classCode = connection.GenerateClass("select * from Table");
Console.WriteLine(classCode);
}
- 指定类名
using (var connection = Connection)
{
var classCode = connection.GenerateClass("with EMP as (select 1 ID,'WeiHan' Name,25 Age) select * from EMP", className: "EMP");
Console.WriteLine(classCode);
}
DataTablePocoClass
代码位置:DataTablePocoClassGenerator.cs
var dt = new DataTable();
dt.TableName = "TestTable";
dt.Columns.Add(new DataColumn() { ColumnName = "ID", DataType = typeof(string) });
var result = dt.GenerateClass();
var expect =
@"public class TestTable
{
public string ID { get; set; }
}";
Assert.Equal(expect, result);
Tranlated By Open Ai Tx | Last indexed: 2025-06-29