【发布时间】:2013-03-15 06:26:55
【问题描述】:
我有一个包含以下类的实体框架模型(我已经简化了这些类以便于查看):
PuzzleItem
-PuzzleId (int, primary key)
-Title
PuzzleProgress
-ProgressId (int, primary key)
-PuzzleId (FK)
-UserId (FK)
在PuzzleItem 我有很多关卡。 PuzzleProgress 通过在用户完成上一个级别时插入该级别的记录来跟踪用户处于哪个级别。首先,新用户将在PuzzleProgress 和PuzzleId = 1 中拥有一个条目。
在我的代码中,我使用以下语句执行左外连接,这样我将获得所有谜题的列表,并向我指出哪个谜题尚未解决。我参考了this post from StackOverflow。
这是我的代码:
var result = from pzs in e.PuzzleItems
join prg in e.PuzzleProgresses on pzs equals prg.PuzzleItem
into pzs_prg_tbl
from pzs_prg in pzs_prg_tbl.DefaultIfEmpty()
where pzs_prg.UserId == userId
select new SimplePuzzleItem()
{
PuzzleId = pzs_prg.PuzzleId,
PuzzleName = pzs_prg.PuzzleItem.Title,
IsUnlocked = (pzs_prg == null?false:true)
};
运行代码后,只返回这个新用户的第一级(而PuzzleItem表有3条记录)。
我尝试过使用代码,但我上面粘贴的代码是我能到达的最近的代码,有人能指出我正确的方向吗?谢谢!
【问题讨论】:
标签: wcf entity-framework