ADO.NET EF中多表查询的问题

chenli861014 2009-12-17 11:56:50
头疼,查了很多有关资料,发现没有讲EF中多表联合查询返回结果集的,问问大家EF是否支持多表查询,如何支持那它应该返回什么类型的数据?例如我有学生表,成绩表,我要查询得到学生成绩联合查询后的结果。
...全文
931 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengin 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mrwsr 的回复:]
3楼的不了解就不要清下结论哦

楼主问题描述太不清楚了,建议还是好好补一下EF的相关知识。


假如有一个Model,有两个EntitySet:Students、Scores,Student有属性StudentID、StudentName,Score表有ScoreID、Score跟StudentID,二表之间是一对一的关系。
(以上假设信息楼主应该给出来的,别老想动一动嘴巴就能让人能帮……
[/Quote]
ID从哪里来的呢?
  • 打赏
  • 举报
回复
我也很想知道这个问题的答案,请大家帮帮忙啊,或者推荐一下学习EF的网站、书籍吧
mrwsr 2009-12-18
  • 打赏
  • 举报
回复
EF就是要让我们从数据库中解脱出来,当然不推荐使用,看具体需求吧,反正我能不用就不用。

而且EF还不能完全支持存储过程。
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wjq 的回复:]
select new {表1.字段....表2.字段}

返回的是匿名类的集合
[/Quote]
那我返回类型应该写什么呢?总不能是Object吧?
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 busydonkey 的回复:]
说实话EF对多表的支持不是太好,如果楼主真的想用多表返回一个对象只有新建一个数据模型,这个模型使用多个表来构建,那么返回的对象就是多表的对象
[/Quote]
我也想过自己建数据模型,但是对于比较大的系统来讲,数据模型不是要建的很多(如果还用到接口实体类的话就更加麻烦了)?当然也可以使用视图模型,虽然建立视图开发起来比较快,不过视图相比较自定义模型,数据冗余又会比较大。
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 comzheng 的回复:]
结贴率百分之零哦
如果有外键的话它会自动连接上的。。如果没有外键约束的话就得用join来连接了。
然后 select new{需要的列}
[/Quote]
恩 偶不太溜达csdn的,这次肯定结贴,我回去试试先。
BusyDonkey 2009-12-17
  • 打赏
  • 举报
回复
说实话EF对多表的支持不是太好,如果楼主真的想用多表返回一个对象只有新建一个数据模型,这个模型使用多个表来构建,那么返回的对象就是多表的对象
wjq 2009-12-17
  • 打赏
  • 举报
回复
select new {表1.字段....表2.字段}

返回的是匿名类的集合
comzheng 2009-12-17
  • 打赏
  • 举报
回复
结贴率百分之零哦
如果有外键的话它会自动连接上的。。如果没有外键约束的话就得用join来连接了。
然后 select new{需要的列}
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mrwsr 的回复:]
看出来你是很新的新手...

我不是高手,我也是初学者 呵呵

我一般不看国内的中文书,看英文电子书比较多,还有就是经常上找英文视频看,www.asp.net上面有入门视频,还有牛人的博客呀什么的...
[/Quote]
再问兄弟一个问题,在EF中,你推荐用视图或者存储过程吗?
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wjq 的回复:]
引用 6 楼 chenli861014 的回复:
引用 2 楼 wjq 的回复:
select new {表1.字段....表2.字段}

返回的是匿名类的集合

那我返回类型应该写什么呢?总不能是Object吧?
C# 3.0的新语法~var来声明返回类型~~~编译器会自己处理
[/Quote]
不过楼上的wjq朋友 你确定你的方法能实现7楼兄弟所说的样子?我试了一下不行 麻烦你依据7楼的案例写个具体点的代码让我看看,不甚感谢!
wjq 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chenli861014 的回复:]
引用 2 楼 wjq 的回复:
select new {表1.字段....表2.字段}

返回的是匿名类的集合

那我返回类型应该写什么呢?总不能是Object吧?
[/Quote]C# 3.0的新语法~var来声明返回类型~~~编译器会自己处理
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mrwsr 的回复:]
看出来你是很新的新手...

我不是高手,我也是初学者 呵呵

我一般不看国内的中文书,看英文电子书比较多,还有就是经常上找英文视频看,www.asp.net上面有入门视频,还有牛人的博客呀什么的...
[/Quote]
偶刚毕业,牛人们都说看英文书比较好,可是英文真的很难看懂,不过我会听你的建议多看看这方面的书和官网,谢啦!!
mrwsr 2009-12-17
  • 打赏
  • 举报
回复
看出来你是很新的新手...

我不是高手,我也是初学者 呵呵

我一般不看国内的中文书,看英文电子书比较多,还有就是经常上找英文视频看,www.asp.net上面有入门视频,还有牛人的博客呀什么的...
chenli861014 2009-12-17
  • 打赏
  • 举报
回复
高手 呵呵 其实我对EF的学习才刚开始,以前都是用其他ORM开发的,想问下哪边有好一点的资源可以去深入研究的?市面上有相关的书籍了吗?
mrwsr 2009-12-17
  • 打赏
  • 举报
回复
3楼的不了解就不要清下结论哦

楼主问题描述太不清楚了,建议还是好好补一下EF的相关知识。


假如有一个Model,有两个EntitySet:Students、Scores,Student有属性StudentID、StudentName,Score表有ScoreID、Score跟StudentID,二表之间是一对一的关系。
(以上假设信息楼主应该给出来的,别老想动一动嘴巴就能让人能帮上你)


那么取关联数据:

ScoreEntities ctx = New ScoreEntities();
Student s = ctx.Students.First(n=>n.StudentID==ID);
s.ScoreReference.Load();

手动进行关联后可通过以下方式访问两个表的相关属性:
s.StudentID
s.StudentName
s.Student.Score.ScoreID
s.Student.Score.Score

EF提供了三种查询方式:Linq To Entities、QueryBuilder、Entitiy SQL

..........

............

自己看书去吧

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧