使用MVC5 EF6 code first 和Oracle11g 遇到的连表查询问题
c#吧
全部回复
仅看楼主
level 1
415341535 楼主
小弟刚接触这种模式的开发,在写不需要连表查询的业务倒是没有问题,但是在主子连表查询的时候却没有什么好的解决方法了。因为前台的cshtml页面里只允许引入一个model,研究了半天也不得其道。
比如:
表A 为主表 其中包含ID,BILLNUMBER,CREATEUSER
表B 为子表 其中包含ID,BILLNUMBER,GOODNAME
A-B的关系为一对多
其中想以BILLNUMBER作为A,B表的关联字段。通过BILLNUMBER把主子表的信息全部查询出来。并且在页面中显示。
我应该怎么办?吧里有没有哪位大神能分享点经验。
先谢过!
2017年07月04日 04点07分 1
level 1
415341535 楼主
[加1]
2017年07月04日 04点07分 2
level 15
一对多的话, 应该是 子表里面, 有一列, 是 主表的 主键 啊。
你那里搞个 BILLNUMBER , 也太坑了。
2017年07月04日 05点07分 3
感谢小吧主的回答,我把BILLNUMBER(单据编号)做为主表的主键字段,在新建单据时生成单据编号。并且我在子表中用BILLNUMBER做为外键与主表进行关联,意思是在查询时,可以根据单据编号关联查询出来,例如在JOIN 的时候A.BILLNUMBER=B.BILLNUMBER就可以得到某单号下有多少条明细记录。
2017年07月04日 06点07分
level 15
如果你代码写的没问题的话, code first 生成表之后。 子表上面, 会创建外键的吧?
如果创建外键成功的话, 那就没有问题了。
你要同时查询 主表和子表的话, 只需要简单。
var query =
from data in context.主表.include("子表List")
select data;
这样,画面显示的时候, 就是
foreah( var 主表 in query ) {
显示 主表的属性.
foreach(var 子表 in 主表.子表List ) {
显示子表的内容
}
}
2017年07月04日 06点07分 6
嗯。谢谢。
2017年07月04日 09点07分
level 15
github.com/[乖]wangzhiqing999/[太开心]my-csharp-sample[不高兴]/tree/[睡觉]master/[呼~]A0622_EF_OneToMany
code first 一对多的例子代码。
2017年07月04日 06点07分 7
1