Dapper 文章之前的事

使用 ORM通常第一步就是建立和資料庫對應的資料類別

如果是用 Entity Framework的話,用精靈應該可以自動建立對應

而 Dapper 的話就需要自己去對應


如果資料庫欄位少的話 多做幾次複製貼上就好

只是多的話就覺得很煩。

參考了 mrkt 的程式學習筆記-前輩的 文章

Dapper - 使用 LINQPad 快速產生相對映 SQL Command 查詢結果的類別

裡面有提到另一位作者的文章

Generating .NET POCO Classes for SQL Query Results -- Visual Studio Magazine 
by Joe Kunk

參考了做法。因為註解內容 我想要不同的資訊

所以自己做了一個 MySQLQueryResults

目前功能很簡單,登入資料庫後會自動抓取 Table 和 View

選取的話會自動產生簡單的指令

不想要註解 就不要勾選添加註解

最後產生類別,就會有C#用的類別出現(自己去複製貼上吧)

目前簡單提供 Ver 1,會額外做這軟體的原因是,想要多試試看一些SQL指令

未來有需求的話,可能會挖出來做修改更新,添加一些指令的功能測試進去

MySQLQueryResults_Ver1


感覺沒貼些程式上來,好像怪怪的

貼個兩段寫的時候比較 個人比較特別注意到的

using (var cmd = _connection.CreateCommand())
{   // 抓取 Table 和 View
    cmd.CommandText = "select name from sysobjects where xtype='U' OR xtype='V'";
 
    using (var reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            if (reader["name"].ToString().CompareTo("sysdiagrams") == 0)
                continue;
            TableCB.Items.Add((reader.GetString(0)));
        }
    }
}

這段的 注意事項事 xtype='U' 跟 xtype='V',分別對應的是 Table和 View ,需要知道其他內容的話請自行Google

而 跳過 sysdiagrams 是因為這是資料庫圖表 建立類別的時候不需要這資訊

另一小段,簡單的抓出 Table的名稱 當作是類別的名稱

// 不知道LINQ 是否有方法組合,先跑迴圈抓名稱
if (CommandSplit.Contains("from"))
{
    bool bNext = false;
    foreach (string strOne in CommandSplit)
    {
        if (bNext)
        {   // 先用一個名稱就好
            _strClassName = strOne;
            break;
        }
        if ("from" == strOne)
            bNext = true;
    }
}

利用空白將 SqlCommand的字串分割 Split

因為要抓出 from下一個字串出來,但沒研究出 Linq該如何去查詢

我知道可以找出from是位於 Strin[] 的哪個位置

但是我需要的是 +1  後的位置。因為對 Linq熟悉度沒那麼高

所以就先這樣寫,未來如果有研究出 Linq的做法,再把這小段簡化

也歡迎各位提供Linq的做法來討論