艾三元 Every day to be a little better

【干貨分享】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.如果有不對的或不理解的地方,希望大家可以多多指正,提出問題,才能站在更多用戶角度,編寫了出更便捷實用的工具。

posted @ 2019-06-22 23:16 艾三元 閱讀(...) 評論(...) 編輯 收藏
 
内蒙古快3开奖结果