0

実行する必要があるクエリがあります。

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

これは私のローカル マシンでは正常に動作しますが、同じセットアップにもかかわらず、Web サーバーでは機能しません。問題は、ユーザーを含めようとすることです

インクルード (m => m.User)

しかし、ユーザーはデータベースに存在できなくなったため、First() を使用しているため、「シーケンスには要素が含まれていません」がスローされます。

質問: ユーザーが DB にいないときにブレーキがかからないようにクエリを作成する方法はありますか? SQLの外部結合のようなものですか?

編集: ユーザーがいない場合でも、メッセージを返す必要があります...

4

2 に答える 2

1

First() はそのような例外をスローします。要素がないときに null またはデフォルト値を返したい場合は、FirstOrDefault() を使用してみてください。

于 2013-07-02T15:42:08.907 に答える
0

唯一の方法は、クエリを 2 つに分割することだったようです。

`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;

return message

`

于 2013-07-22T10:52:50.603 に答える