目前有種狀況是已存在一個Table, 現在新系統想要使用它。
之前我們都是自己依據table欄位, 自己手動加class補property。
而這次的table欄位有60個, 自己手動補class效率有點低。
所以就興起自製一個工具來幫忙做這件事。
目前有種狀況是已存在一個Table, 現在新系統想要使用它。
之前我們都是自己依據table欄位, 自己手動加class補property。
而這次的table欄位有60個, 自己手動補class效率有點低。
所以就興起自製一個工具來幫忙做這件事。
我想網路上應該也有現成的專案或是用Entiry Frarmework等框架提供的tool, 但其實就想自己實作些東西,順便檢視一下自己。
首先, 公司底層是用dapper, 只要產生同table名稱的class,以及同db field名稱的Property,
應該就可以滿足需求了(不考慮attribute)。
大體上是使用DbProviderFatories.GetFactory, 產生不同資料庫driver實作的 DbProviderFactory
產生IDbConnection 物件補上connectionString就可以進行資料庫連線了。
這邊其實要注意的是, 如果沒有安裝官方的driver,是直接放dll到bin底下
在config裡要設置System.Data 的DbProviderFactories區塊設置好ProviderName與dll的對應。
然而其實我不是很清楚各個資料庫裡的系統資料表描述schema的table是哪些。
我是透過官方擷取資料庫結構描述的文章,是用DbConnection.GetSchema()加上一些限制的變數取得資料表描述。
有些這些資訊就可以輸出成檔案了。
目前測試過SqlClient 以及 Mysql.Data都能正常使用, DB2還需要調整程式的寫法才有辦法使用。
另外property都是輸出成string的型別,還需要補上依據不同的資料庫欄位型別輸出成不同欄位型別的處理。
參考資料: