【乾貨分享】C# 實體類生成工具

艾三元發表於2019-06-22

前言

  專案實戰中不論是業務編碼還是通用編碼,總會歸納出一些通用的工具類。放入專案中一勞永逸,讓兄弟姐妹們避免編寫重複程式碼。所以利用了工作之餘的時間,將這些散落在多個專案中精緻優雅的工具類,歸納起來形成工程,方便後續工作的使用和便捷開發。

根據實際需求,編寫了此工具。目前只支援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.如果有不對的或不理解的地方,希望大家可以多多指正,提出問題,才能站在更多使用者角度,編寫了出更便捷實用的工具。

相關文章