iT邦幫忙

0

WPF 呼叫API並使用DAPPER 問題請教

  • 分享至 

  • xImage

關於DAPPER我有個問題

正常寫法大概是這樣

using (var cn = new SqlConnection(Untity.SqlConnection))
      {
           cn.Open();
           List<Category> categorys = cn.Query<Category>("SELECT * FROM                  Category").ToList();
           Console.WriteLine($"筆數{categorys.Count()}");
      }

回傳時會明確的知道型別及回傳的欄位
然後我的WPF再綁定相對應的MODEL然後顯示
目前是有個問題
如果說我會根據不同條件在同一個頁面顯示不同TABLE的資料
可能我點選A選項就顯示A TABLE資料點選B就顯示 B TABLE資料

https://blog.darkthread.net/blog/dapper-return-datatable/
這個網站最符合我的要求,我需要轉成DATATABLE
只是不太清楚API該怎麼回傳

不知道這部分該如何寫QQ

更新:目前我是用ExecuteReaderAsync這個方法來處理
看了一下有查到結果
我希望能回傳到WPF然後再使用

var dt = new DataTable();
dt.Load(dr);
var row = dt.Rows[0];

這種方式來處理

可是我API那邊把結果轉成JSON的時候就一直卡住沒回應
以下是我回傳的方式

 QueryResult = await conn.ExecuteReaderAsync(sSql);
                    if (QueryResult.HasRows)
                    {
                        json = JsonConvert.SerializeObject(QueryResult);
                    }          

QueryResult的型別是DbDataReader
https://ithelp.ithome.com.tw/upload/images/20231008/20110132fQ53A00xuT.png

1013更新
我後來解掉了
大概是這樣寫

 DataTable QueryResult =  new DataTable();
 var queryResult = await conn.ExecuteReaderAsync(sSql);
 QueryResult.Load(queryResult);   
 
 最後回傳前再序列化就結束
看更多先前的討論...收起先前的討論...
iT邦新手 4 級 ‧ 2023-10-08 10:04:57 檢舉
你要先把 DbDataReadr 的資料讀出來存成可以被 JsonConvert.SerializeObject 處理的資料格式才能正確轉成 json 字串
iT邦新手 4 級 ‧ 2023-10-08 10:08:23 檢舉
參考這個應該是最簡單的解法 https://stackoverflow.com/a/43785459
ntustzeus iT邦新手 2 級 ‧ 2023-10-11 11:34:12 檢舉
wpf的話,應該是用DataGrid?,然後你是用MVVM嗎?
tenno081 iT邦研究生 4 級 ‧ 2023-10-13 10:27:38 檢舉
我是用DATATABLE,是MVVM沒有錯~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
蕭小光
iT邦新手 5 級 ‧ 2023-10-08 06:54:06

如果說點A要A Table的資料,點B要B Table的資料,那就是做兩個API傳送資料,當點A傳A,點B傳B,或是做一個API,傳送A,B的資料,只是在WPF那邊切換就好

tenno081 iT邦研究生 4 級 ‧ 2023-10-08 08:45:02 檢舉

你好,可能沒辦法,因為我還有很多TABLE也需要顯示
只是先舉個兩個來說明

0
ekkusu
iT邦新手 4 級 ‧ 2023-10-10 20:43:08

你的問題應該跟dapper無關
應該是不會處理WPF的顯示部分吧

我要發表回答

立即登入回答