C# SqlSugar 数据库 T4模板

2023-12-24 18:43:06

生成效果

模板代码

<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Data" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data"#>
<#@ import namespace="System.Data.SqlClient"#>
<#

// 连接字符串
string connectionString = "Server=DESKTOP-7IR5JSN;Database=BlazorApp;Integrated Security=False;User ID=sa;Password=asdf-1234;";

// 数据库连接
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

// 查询数据库中的表信息
string query = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'";
SqlCommand command = new SqlCommand(query, connection);
List<string> tables = new List<string>();

using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        tables.Add(reader.GetString(0));
    }
}

// 生成模型类
foreach (var table in tables)
{
#>
namespace BlazorORM.Entity
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using SqlSugar;

    // 生成的模型类对应数据库表: <#= table #>
    [SugarTable("<#= table #>")]
    public class <#= table #>
    {
<#
        query = $"SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{table}'";
        command.CommandText = query;
        List<string> columns = new List<string>();

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                string columnName = reader.GetString(0);
                string columnType = reader.GetString(1);
#>
        // 对应数据库列:<#= columnName #>,类型:<#= columnType #>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] // 可根据需要设置主键、自增等属性
        public <#= GetCSharpType(columnType) #> <#= columnName #> { get; set; }
<#
            }
        }
#>
    }
}
<#
}

// 关闭连接
connection.Close();

// 将数据库类型映射为 C# 类型
string GetCSharpType(string dbType)
{
    // 可根据数据库类型自定义映射
    switch (dbType)
    {
        case "int":
            return "int";
        case "nvarchar":
            return "string";
        // 添加其他数据库类型映射
        default:
            return "object";
    }
}
#>

文章来源:https://blog.csdn.net/qq873113580/article/details/135184360
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。