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