0

我有一个需要执行的查询:

return entity.Messages.Include(m => m.User)
                      .Include(m => m.MessageRecipients.Select(u => u.User))
                      .First(m => m.MessageID == messageID);

这在我的本地机器上运行良好,但它在网络服务器上中断,尽管设置相同。问题是我尝试包含用户

包括(m => m.User)

但用户不能再存在于数据库中,所以它抛出“序列不包含元素”,因为我使用 First()。

问题:有没有办法以某种方式构建查询,所以当用户不在数据库中时它不会刹车?SQL中的外部联接之类的东西?

编辑:如果没有用户,我仍然需要返回消息......

4

2 回答 2

1

First() 会抛出这样的异常,如果你想在没有元素时返回 null 或默认值,那么尝试使用 FirstOrDefault()。

于 2013-07-02T15:42:08.907 回答
0

似乎唯一的方法是将查询分成两部分:

`var message = entity.Messages .Include(m => m.MessageRecipients.Select(u => u.User)) .First(m => m.MessageID == messageID);

var author = entity.Users.Where(u => u.UserID == message.AuthorUserID).FirstOrDefault();

如果(作者!= null)消息。用户=作者;

返回信息

`

于 2013-07-22T10:52:50.603 回答