2016-05-19 9 views
0

私はFirstOrDefaultを使用して自分のストアからアイテムを取得しようとしています。存在しない場合は、nullを返すようにします。nullの代わりにFirstOrDefault例外をスローする

FirstOrDefaultはこれを行う必要があります。データベースが存在しないので、nullを返すと予想されますが、SQLExceptionがあります。

なぜこれが返されないのですかnull

var setting = context.Settings.FirstOrDefault(s => s.ApplicationName == _applicationName && s.Name == name); 
+1

データベースが存在しないということを意味しますか?スローされている例外の全文は何ですか?基になるテーブルが存在しない場合、当然、それは最初に探しているレコードを照会することができないので、例外がスローされます! –

+1

何が例外ですか?あなたはデータベースが存在しないと言いました。これは例外ですので、FirstOrDefaultはデータベースが存在する場合に動作します。 – DanielVorph

+0

前述のように 'context.Settings'と' FirstOrDefault'が呼び出されない可能性があります。 – evanmcdonnal

答えて

1

これはデフォルトの動作で、ソースが存在しない場合は.FirstOrDefault()が例外をスローします。ソースが行うときにNullが返されますが、特定のエンティティは存在しません。

https://msdn.microsoft.com/en-us/library/bb340482(v=vs.100).aspx

+0

本当に、それが本当に唯一の問題だった場合、スローされる例外はArgumentNullExceptionになります。 –

+0

良い点。あなたの答えは、この状況の方がより正確です。しかし、どのように多くの人が.xOrDefaultがすべての状況でnullを返すと思いますか? –

+0

すごく、これは私が知りたかったものです。ありがとう – user3519261

3

SQLExceptionがスローされているという事実も、あなたが作業するデータに関するデータベースを問う問題があったことをあなたに伝えます。あなたの "データベースは存在しません"と言っているので、私はSQLExceptionがそれによって引き起こされると思います。

FirstOrDefaultは、Settingsプロパティへのアクセスが既にSQLExceptionを投げているため、実行される可能性はほとんどありません。

関連する問題