null許容のナビゲーションプロパティを含むプロジェクションを実行するWCFデータサービスに対してクエリを作成しようとしています(つまり、基になるデータモデルのFK列がnull可能であるため、関連付けは0..1です)。プロジェクトの言語はVB.NETであり、私の選択ではありません。クエリの例:
From t In DataServiceReference.Context.Transactions
Where t.ID = transactionID
Select
CSM = t.WrittenByEmployee.Name, _
t.CustomerFirstName
WrittenByEmployeeがnullである行に対してこのクエリを実行すると、予想どおり、次のエラーが発生します。
ナビゲーションプロパティ'WrittenByEmployee'によって返されるエントリはnullであり、初期化できません。このプロパティにアクセスする前に、null値を確認する必要があります。
このブログによると、C#では三項?:演算子を使用して条件付きnullチェックが可能です。ただし、残念ながら、プロジェクトはC#ではなくVB.NETにあります。VBで同等のものがIf()演算子であることは知っていますが、期待どおりに機能していないようです。上記のクエリをこれに変更すると、次のようになります。
Select
CSM = If(t.WrittenByEmployee IsNot Nothing, t.WrittenByEmployee.Name, String.Empty)
実行時にこのエラーが発生します:
式(t.WrittenBy Employee!= null)を使用したタイプ(...)のインスタンスの構築または初期化はサポートされていません
テストを逆にしようとしましたが、代わりに(t.WrittenByEmployee == null)を使用しただけで、同様のエラーが発生しました。
このクエリを作成して、Data Servicesが受け入れる方法でWrittenByEmployeeナビゲーションプロパティにnullがないかどうかを確認するにはどうすればよいですか?