Entity framework 如何为此场景编写此Linq查询?

Entity framework 如何为此场景编写此Linq查询?,entity-framework,linq-to-entities,Entity Framework,Linq To Entities,我需要执行一个查询: return entity.Messages.Include(m => m.User) .Include(m => m.MessageRecipients.Select(u => u.User)) .First(m => m.MessageID == messageID); 这在我的本地机器上运行良好,但在Web服务器上会中断,尽管设置相同。问题是我试图包括用户

我需要执行一个查询:

return entity.Messages.Include(m => m.User)
                      .Include(m => m.MessageRecipients.Select(u => u.User))
                      .First(m => m.MessageID == messageID);
这在我的本地机器上运行良好,但在Web服务器上会中断,尽管设置相同。问题是我试图包括用户

包括(m=>m.User)

但是用户不能再存在于数据库中,因此它抛出“Sequence contains no elements”,因为我使用First()

问题:有没有一种方法可以以某种方式构建查询,这样当用户不在数据库中时,查询不会停止?类似于SQL中的外部联接


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

First()将引发类似这样的异常,如果您希望在没有元素时返回null或默认值,请尝试使用FirstOrDefault()

看来唯一的办法就是将查询一分为二:

`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()

if(author!=null) message.User=作者

回信


`

FirstOrDefault()是否仍将返回用户属性为null的消息?或者查询将返回null?查询将返回null。您知道如何编写此查询以仍然返回消息实例吗?