作者airtsubasa (偽學姊)
看板C_Sharp
標題[問題] MVC 在view顯示其他資料庫資料
時間Fri Jun 12 21:56:40 2020
想請問能否提供關鍵字去實現以下內容
我可以用php做到,但mvc剛接觸…不熟
我已經有用entitiy framework,產生model了
也可以在view裡面顯示list,
但假設我要用其中一個欄位去select
其他資料庫的某個table的欄位資料,該如何實現比較恰當?
以前php做法就是把主table撈出來後,再去for loop
裡面下sql去把其他資料庫的table欄位值抓出來
謝謝!
-----
Sent from JPTT on my Asus ASUS_Z01RD.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.30.103.31 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1591970202.A.498.html
1F:推 ian90911: 跨資料庫? 還是只是跨表? 06/13 15:32
2F:→ airtsubasa: 跨資料庫 06/13 21:38
3F:→ airtsubasa: 用ms sql 的某個欄位去查詢oracle 某個table有沒有存 06/13 21:39
4F:→ airtsubasa: 在這個值 06/13 21:39
5F:→ airtsubasa: 這兩者做法不一樣嗎? 06/13 21:41
6F:推 name2name2: 可以先把Sql寫出來 然後用SqlCommand去抓 06/14 15:40
8F:→ name2name2: sql寫出來 也可以看怎麼轉成EF的語法做法去抓也行 06/14 15:41
9F:→ airtsubasa: 謝謝樓上,我後來先把這兩個table先取出變成list,再 06/15 18:39
10F:→ airtsubasa: 透過linq先取主list再去子查詢子list,想請問這種方式 06/15 18:39
11F:→ airtsubasa: 會不會有效能問題 06/15 18:39
12F:→ awwseed: 兩邊如果先撈出來到 List 代表都進記憶體了吧? 06/15 19:29
13F:→ awwseed: 如果兩邊都一千萬筆資料,那你就是先把兩千萬筆資料讀出 06/15 19:29
14F:→ awwseed: 接下來就在記憶體裡面操作了 06/15 19:30
15F:→ awwseed: 可以思考一下這功能有必要每次都全撈出來再用 LINQ 嗎? 06/15 19:31
16F:→ airtsubasa: 我最初的想法是在view那端去做select其他資料庫欄位動 06/15 19:45
17F:→ airtsubasa: 作,這樣最多只做分頁數的筆數,不過不知道如何實做 06/15 19:45
18F:→ airtsubasa: 也不確定適不適合在這做,資料量大概是2000對2000 06/15 19:46
19F:→ airtsubasa: 問的方式可能蠢!謝謝回覆 06/15 20:15
20F:→ name2name2: 可以用JOIN的方式 先用表A的資料用WHERE 篩過 06/15 20:31
21F:→ name2name2: 再去JOIN表B 就可以一次取得條件內的表A表B資料 06/15 20:32
22F:→ name2name2: 取回AB資料到程式後 在程式內部繼續處理 06/15 20:32
23F:→ awwseed: 你的分頁如果在 Controller 做的話,可以在 return 前 06/16 13:59
24F:→ awwseed: 把分頁後的 A 資料去跨 DB 查 B資料表後組合起來 06/16 14:00
25F:→ awwseed: 再將最終結合完的結果 return View(viewModel) 06/16 14:00
26F:→ awwseed: 如果你現在是直接將 EntityFramework DB First 產出來的 06/16 14:01
27F:→ awwseed: Model 回傳到 View 的話,看你要做一個 Partial class 06/16 14:01
28F:→ awwseed: 或是建立另一個 ViewModel 的 Class 將你需要的 A、B資料 06/16 14:02
29F:→ awwseed: 欄位都放在這個 Class 中,前台的檢視(View) 接這個Class 06/16 14:02
30F:→ awwseed: 做畫面的呈現也是可以 06/16 14:02
31F:→ airtsubasa: 謝樓上,原來分頁後還可以處理,已照著實作ok 06/16 17:46