作者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/cn.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