我有一个我需要执行的查询:
return entity.Messages.Include(m => m.User)
.Include(m => m.MessageRecipients.Select(u => u.User))
.First(m => m.MessageID == messageID);
这在我的本地计算机上工作正常,但它在网络服务器上中断,尽管设置相同。问题是我尝试包含用户
包括(m => m.User)
但是用户不再存在于数据库中,因此抛出“Sequence contains no elements”,因为我使用了First()。
问题:有没有办法以某种方式构建查询,因此当用户不在DB中时它不会制动?像SQL中的外连接?
编辑:如果没有用户,我仍然需要返回消息...
答案 0 :(得分:1)
First()会抛出异常,如果你想在没有元素时返回null或默认值,那么尝试使用FirstOrDefault()。
答案 1 :(得分: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();
if(author!= null) message.User = author;
返回消息
`