通过T4模板生成数据库实体类,妈妈再也不用担心我用CodeFirst了!!!

本文介绍了如何利用T4模板简化.NET项目中数据库表映射实体类的创建过程,避免手动添加字段的繁琐操作。通过创建模板和辅助类,能够自动生成符合需求的实体类代码。
摘要由CSDN通过智能技术生成

T4模板是一种代码生成器,可以通过套用设置好的模板快速生成代码,本文将介绍如何通过T4模板快速生成数据库的表映射实体类,学会这个方法,再也不用烦心于codefirst要一个一个添加字段的无聊事情当中了!

首先我们新建一个类库,右键项目-添加-新增项,在搜索栏中搜索T4,如下图:
在这里插入图片描述
选择文本模板,名称这里我们命名为EntitiesTemplate,点击添加。

添加完成后我们再新增一个模板帮助类TempHelper,如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
   
    public class TempHelper
    {
   
        //数据库连接字符串(web.config来配置)
        public const string connStr = "Server=***.***.**.***;Database=***;uid=**;pwd=******;";
        public static string nspace = "MyMis";


        /// <summary>
        /// 执行SQL语句返回DS
        /// </summary>
        /// <param name="cmdText">SQL语句</param>
        /// <returns>DS</returns>
        public static DataSet ExecuteQuery(string cmdText)
        {
   
            using (SqlConnection conn = new SqlConnection(connStr))
            {
   
                DataSet ds = new DataSet();
                try
                {
   
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
                    da.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException e)
                {
   
                    //conn.Close();
                    throw new Exception(e.Message);
                }
                finally
                {
   
                    //conn.Dispose();
                    //conn.Close();
                }
                return ds;
            }
        }

        /// <summary>
        /// 从数据库中去除表字段的详细信息
        /// </summary>
        /// <param name="tbName">表名</param>
        /// <returns></returns>
        public static List<DBModel> GetDBmodel(string tbName)
        {
   
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT");
            sb.Append("  table_name       = Case When A.colorder=1 Then D.name Else '' End,");
            sb.Append("  table_Directions     = Case When A.colorder=1 Then isnull(F.value,'') Else '' End,");
            sb.Append("  field_index   = A.colorder,");
            sb.Append("  field_name     = A.name,");
            sb.Append("  field_Directions   = isnull(G.[value],''),");
            sb.Append("  tag       = Case When COLUMNPROPERTY( A.id,A.name,'IsIdentity')=1 Then '√'Else '' End,");
            sb.Append("  iskey       = Case When exists(SELECT 1 FROM sysobjects Where xtype='PK' and parent_obj=A.id and name in (");
            sb.Append("  SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = A.id AND colid=A.colid))) then 'True' else 'False' end,");
            sb.Append("  field_type       = B.name,");
            sb.Append("  field_size = A.Length,");
            sb.Append
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值