iT邦幫忙

7

C# Dapper POCO類別生成器 : 全資料庫表格類別代碼生成 (支持Dapper.Contrib)

c#
  • 分享至 

  • xImage
  •  

PocoClassGenerator Github連結


說明

PocoClassGenerator起於個人工作上需求需要為不同的RDBMS的Table跟View生成Dapper POCO類代碼,以Necroskillz的文章 Generate C# POCOs from SQL statement in LINQPad為基礎開端開發功能。

自己身為Dapper、Dapper.Contrib、輕量化愛好者很喜歡這小工具,希望也幫到有需要的版友 :)


主要功能

  • 支持當前資料庫全部表格、View批量生成POCO類別代碼
  • 支持Dapper.Contrib: 自動判斷/添加 [Key]、[ExplicitKey]、[Computed]
  • 支持多資料庫SQLServer、Oracle、MySQL、PostgreSQL
  • 效率挺快的,一百個表格5秒以內跑完
  • 支持類別註解Comment生成,方便辨認欄位資料

一般POCO Class 測試連結/效果圖:

Online Demo : POCO Class Generator GenerateAllTables | .NET Fiddle

20190430141947-image.png

Dapper Contrib 測試連結/效果圖:

The Online Demo : POCO Dapper Contrib Class Generator GenerateAllTables | .NET Fiddle

20190502132948-image.png


使用方式

  • 第一步 : 複製/貼上 PocoClassGenerator.cs 代碼到你的專案或是LINQPad.
    或是喜歡NuGet套件的使用者,這邊有打包NuGet連結方便下載,或是使用CLI命令
PM> install-package PocoClassGenerator
  • 第二步 : 使用 Connection 物件去呼叫GenerateAllTables方法並顯示生成字串
using (var connection = Connection)
{
	Console.WriteLine(connection.GenerateAllTables());
}

支持 Dapper Contrib POCO Class

  • 呼叫方法並使用 GeneratorBehavior.DapperContrib 參數
using (var conn = GetConnection())
{
    var result = conn.GenerateAllTables(GeneratorBehavior.DapperContrib);
    Console.WriteLine(result);
}

生成 View

using (var conn = GetConnection())
{
    var result = conn.GenerateAllTables(GeneratorBehavior.View);
    Console.WriteLine(result);
}

生成 Class Comment

using (var conn = GetConnection())
{
    var result = conn.GenerateAllTables(GeneratorBehavior.Comment);
    Console.WriteLine(result);
}

以SQL生成單類別

  1. 以資料庫表格名稱當類別名稱
using (var connection = Connection)
{
	var classCode = connection.GenerateClass("select * from Table");
	Console.WriteLine(classCode);
}
  1. 指定類別名稱
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);
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言