读书人

DbContext.Database.SqlQuerylt;TElemen

发布时间: 2012-05-28 17:59:54 作者: rapoo

DbContext.Database.SqlQuery<TElement>()如何实现联表查询?
RT。我的数据库是用CodeFirst方式生成的。数据库中有两张表:Player表和PetPlayer表,测试数据如下:

Player表
+----+------------+----------+-----+------------+
| Id | GameUserId | NickName | Sex | profession |
+----+------------+----------+-----+------------+
| 1 | 11 | 尤利娅 | 女 | 南斗圣拳 |
| 2 | 21 | 健次郎 | 男 | 北斗神拳 |
| 3 | 13 | 希恩 | 男 | 南斗圣拳 |
+----+------------+----------+-----+------------+

PetPlayer表
+----+----------+----------+-----------+-------+
| Id | PlayerId | NickName | PetBaseId | Level |
+----+----------+----------+-----------+-------+
| 1 | 1 | 狮子狗 | 1 | 1 |
| 2 | 2 | 东北虎 | 2 | 2 |
| 3 | 3 | 北极熊 | 3 | 3 |
| 4 | 1 | 白天鹅 | 4 | 4 |
+----+----------+----------+-----------+-------+

现在我要执行一条联表查询SQL语句:
string sql = select pp.Id, pp.PlayerId, pp.NickName PetName, p.NickName PlayerName from player p, petPlayer pp where p.Id=pp.PlayerId and p.NickName='尤利娅';
我执行
var rs = myContext.Database.SqlQuery<Object>();
后不知道该怎么处理才能访问原表结构的相对应的字段值?请问我该怎么做?最好详细一点,我初学EF,谢谢!
说明:因为不知道DbContext.Database.SqlQuery<TElement>()的TElement该用什么类型代替,没办法就用了Object。

[解决办法]

C# code
var query=from p in db.Player          join pp in db.petPlayer          on p.Id equals pp.PlayerId          where p.NickName=="尤利娅"          select new          {               pp.Id,               pp.PlayerId,              PetName=pp.NickName ,               PlayerName =p.NickName           };返回的是匿名类 

读书人网 >.NET

热点推荐