3

この質問に拍車をかけ、MVC3/ActiveRecordアプリケーションでこれを試すことにしました。

私はすでにたくさんのモデルを動かしていて、それらのモデルで何かをするいくつかのビューがあります。ここでは特別なことは何もありません。私のモデルの1つはと呼ばれAppSessionます。

上記の質問に基づいて、私はこれが機能することを期待しました:AppSession.FirstOrDefault(a => ...) ?? null

うまくいきませんでした。私はまだを取得しInvalidOperationExceptionます。FirstOrDefaultこれはとに当てはまりますSingleOrDefault。私はそれを回避するために私の呼び出しをラップtry/catchすることになりました。

私はここで何が間違っているのですか?

編集:要求に応じて、実際のコードは次のとおりです。

void getAnAppSession() {
    AppSession sessions = project.AppSessions.FirstOrDefault(a => a.Ip == ip && a.MacAddress == macAddress && a.Platform == platform && a.Version == version && a.EndTime == null)
}

ip、、、およびはすべて、検証可能にnullではないメソッド変数ですmacAddress。私のスキーマ(したがって、私のクラスのプロパティ)には次のものが含まれます。platformversionAppSessions

  • ID(int、nullではない)
  • StartDate(DateTime、nullではない)
  • EndDate(DateTime、null)
  • IP(文字列、nullではない)
  • MacAddress(文字列、nullではない)
  • プラットフォーム(文字列、nullではない)
  • バージョン(文字列、nullではない)
4

1 に答える 1

1

多分あなたproject.AppSessions自身はnullですか?これにより、FirstOrDefault()メソッドはエラーをスローします。呼び出す前にそれがnullかどうかを確認し、nullFirstOrDefaultの場合は新しいAppSessionオブジェクトを作成することをお勧めします。

AppSession sessions = (project.AppSessions as AppSession ?? new AppSession())
    .FirstOrDefault(a => a.Ip == ip && 
                    a.MacAddress == macAddress && 
                    a.Platform == platform && 
                    a.Version == version && 
                    a.EndTime == null);
于 2012-06-06T21:06:21.847 に答える