• 【干货分享】C# 实体类生成工具


    前言

      项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类。放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码。所以利用了工作之余的时间,将这些散落在多个项目中精致优雅的工具类,归纳起来形成工程,方便后续工作的使用和便捷开发。

    根据实际需求,编写了此工具。目前只支持SQLServer数据库,不过我自己有时间也会完成其他数据库支持的,有兴趣的读者可以继续扩展支持其他数据库。

    功能

    1能自动获得用户数据库中的所有数据表;
    2能根据用户所选的数据表,自动生成实体类
    3能自动产生 C# 实体类的(*.cs)代码文件;

    实体工具

    一、界面截图:

    二、SQL语句部分代码

    ----1. 获取所有的数据库名-----
    SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME
    
    -----2. 获取所有的表名------
    SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U' ORDER BY NAME
    --XTYPE='U':表示所有用户表;
    --XTYPE='S':表示所有系统表;
    SELECT NAME FROM SYSOBJECTS WHERE TYPE = 'U' AND SYSSTAT = '83'
    ----注意:一般情况只需要TYPE = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了。

    三、C#部分代码

            /// <summary>
            /// 获取所有数据库
            /// </summary>
            /// <param name="connection"></param>
            /// <returns></returns>
            public static List<DbTable> GetAllDataBaseName(string connection)
            {
                List<DbTable> dic = new List<DbTable>();
                string ConnString = "select name from Master.sys.SysDatabases order by name";
                SqlConnection connect = new SqlConnection(connection);
                SqlCommand cmd = new SqlCommand(ConnString, connect);
                try
                {
                    if (connect.State == ConnectionState.Closed)
                    {
                        connect.Open();
                        IDataReader dr = cmd.ExecuteReader();
                        dic.Clear();
                        while (dr.Read())
                        {
                            dic.Add(new DbTable { value = dr["name"].ToString(), key = dr["name"].ToString() });
                        }
                        dr.Close();
    
                    }
                }
                catch (Exception ex)
                {
                     throw new AggregateException("获得数据库地址错误,你想上天吗?");
                }
                finally
                {
                    if (connect != null && connect.State == ConnectionState.Open)
                    {
                        connect.Dispose();
                    }
                }
                return dic;
            }
            /// <summary>
            /// 写文件
            /// </summary>
            /// <param name="fileName">文件完整路径</param>
            /// <param name="content">内容</param>
            private static void WriteAndSave(string fileName, string content)
            {
                //实例化一个文件流--->与写入文件相关联
                using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    //实例化一个StreamWriter-->与fs相关联
                    using (var sw = new StreamWriter(fs))
                    {
                        //开始写入
                        sw.Write(content);
                        //清空缓冲区
                        sw.Flush();
                        //关闭流
                        sw.Close();
                        fs.Close();
                    }
                }
            }

    工具下载

    实体类生成工具[下载]

    总结

    1.避免编写重复代码,编写此工具生成实体类快速开发。

    2.这类工具在网上已有不少,但是自己可以归纳起来形成工程,放入项目中,不仅自己从中可以学到新的知识也同时提升了自己的总结归纳能力。

    3.此工具还未完善,只支持SQLServer数据库,不过我自己有时间也会完成其他数据库支持的,有兴趣的读者可以继续扩展支持其他数据库。

    4.如果有不对的或不理解的地方,希望大家可以多多指正,提出问题,才能站在更多用户角度,编写了出更便捷实用的工具。

  • 相关阅读:
    unicode编码 utf8
    贝壳IM群聊优化之路
    企点电话SDK的日志追踪系统 https://mp.weixin.qq.com/s/uipndTV8W5s1_qose8MrQQ
    解码未知键的 json 字符串
    内部类
    牛客IOI周赛23普及组全题解
    20以内加减随机试卷
    2929百万级电商平台即时通讯系统设计实践(2)_ev
    org.objectweb.asm.ClassWriter.<init>(I)V异常 .
    VMware安装与卸载CentOS7 详细步骤版本2
  • 原文地址:https://www.cnblogs.com/i3yuan/p/11070840.html
Copyright © 2020-2023  润新知