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 
          };
返回的是匿名类