【发布时间】:2016-02-16 20:13:44
【问题描述】:
我有一个 WebAPI 控制器需要从数据库中返回一个集合,但我还需要从一些实体中删除一些属性。但是,由于某种原因,当我在调试模式下单步执行代码时,表示另一个实体的属性会返回 null,但 sometimes 除外。我在下面显示了将 Sport、HomeTeam 和 AwayTeam 显示为 null 的 json 响应:
但是当我在调试模式下单步执行代码时,我得到了预期的结果:
相关控制器方法如下
public dynamic Get()
{
var allPicks = _db.Picks;
if (User.Identity.IsAuthenticated)
{
string userId = User.Identity.GetUserId();
var picks = _db.UnlockedPicks
.Include(p => p.SelectedPick.AwayTeam)
.Include(p => p.SelectedPick.HomeTeam)
.Include(p => p.SelectedPick.Sport)
.Where(p => p.UserId == userId);
var unlockedPicks = picks.Select(p => p.SelectedPick);
var otherPicks = allPicks.Except(unlockedPicks).Select(p => new
{
Analysis = "",
PickSummary = "",
Title = p.Title,
Id = p.Id,
Sport = p.Sport,
HomeTeam = p.HomeTeam,
AwayTeam = p.AwayTeam,
MatchTime = p.MatchTime,
PublishTime = p.PublishTime
});
return new
{
UnlockedPicks = unlockedPicks.OrderByDescending(p => p.MatchTime),
OtherPicks = otherPicks.OrderByDescending(p => p.MatchTime)
};
}
var publicPicks = allPicks.OrderByDescending(p => p.MatchTime).Select(p => new
{
Analysis = "",
PickSummary = "",
Title = p.Title,
Id = p.Id,
Sport = p.Sport,
HomeTeam = p.HomeTeam,
AwayTeam = p.AwayTeam,
MatchTime = p.MatchTime,
PublishTime = p.PublishTime
});
return new { UnlockedPicks = new Pick[0], OtherPicks = publicPicks };
}
没有Include(),它每次都返回null,但我怎样才能让它每次都返回预期的结果?
【问题讨论】:
标签: c# entity-framework asp.net-web-api