看板 C_Sharp 關於我們 聯絡資訊
請教各位版上的高手們, 小弟目前在串接一個專案的資料庫時, 主要是有三個table要join, 但join的是不同型別的資料,所以一直失敗.. (環境是asp.net mvc 串 mysql) 以下舉例 A_table --------------- Aid int PK,AI A00 string A01 string --------------- B_table --------------- Bid int PK,AI B00 string --------------- C_table --------------- Cid int PK,AI C00 string --------------- A_table.A00 對應的是 B_table.Bid A_table.A01 對應的是 C_table.Cid 所以我用LINQ會是 var from a in db.A_table join b in db.B_table on a.A00 equals b.Bid join c in db.C_table on a.A01 equals c.Cid 出來的結果是失敗,因為type不對, 但是無論我把 Bid.toString() 及 Cid.toString(), 或是 sqlfunctions.stringconvert((double)b.Bid) 都是 LINQ to Entities does not recognize the method 'System.String ToString()' 之類的解釋 礙於這個資料庫是一個運行很久且不能修改, 是否有方式可以解決這個卡了好久的問題... 再次感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.88.126 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1496415460.A.AFB.html
Litfal: 為什麼A00 String會關聯到Bid int? 這DB沒問題嗎? 06/02 23:17
我也想知道為什麼當初設計的人要設成string...明明裡面的值都是int
Litfal: 用LINQPad試了一下,用b.Bid.ToString()沒有問題啊 06/02 23:36
可是他在跑的時候就一直顯示tostring不能使用耶...
vi000246: https://goo.gl/rDJr6V 06/03 01:53
所以因為我用EF才不能用嗎QQ
vi000246: https://goo.gl/hInmqA 06/03 01:55
我也有查到這個,可是我是用join這樣是不是不能用.. ※ 編輯: nonoman (114.136.121.205), 06/03/2017 11:00:22
Litfal: 提供一下你的.net和EF等組件版本 06/03 12:08
Litfal: 然後你先這樣試: 06/03 12:08
Litfal: from b in B_table select 06/03 12:10
Litfal: new { BidStr = b.Bid.ToString() }; 06/03 12:11
Litfal: .ToList() 去執行,看看能不能跑 06/03 12:12
Litfal: 我覺得應該是 MySQL 的關係 06/03 12:16
這個我有試過,也是一樣的QQ,EF版本6.1.3,.net4.5.2,感謝大大 ※ 編輯: nonoman (114.136.121.205), 06/03/2017 13:08:36
vi000246: 要不要試試用舊版的mysql組件 06/03 23:17
vi000246: https://goo.gl/JhdN4P 06/03 23:20
vi000246: 試試先轉成AsEnumerable() 06/03 23:20
chatnoir: 不行的話你就把B,C select出來,把bid,cid轉string 06/04 01:23
Litfal: 我去架了一個MySQL Server來測,測不出你說的問題呢... 06/04 03:52
Litfal: http://i.imgur.com/8DQ2i7L.png 06/04 03:56
Litfal: 試試把 MySql.Data 和 MySql.Data.Entity.EF6 更新一下? 06/04 03:59
xo1100: 小弟linq用tostring也有這種狀況 06/07 14:25
xo1100: A或BC另外select new出來相對應型別再join看看 06/07 14:26