私たちは、多くのSQLクエリに対して.Net Framework 4とLinq to Entitiesを使用してVB.Netにいくつかのプロジェクトを持っています。 EFへの移行は、私たちのための新たな転換です(約4〜6ヶ月間使用しています)。私たちはまだたくさんのストアドプロシージャを使用していますが、Linqからエンティティへもそれらを実行します。VB.NetエンティティへのLinq Null比較 - 'Nothing'または 'Nothing'は何ですか?
私はいくつかの混乱を解消することを望んでおり、意味をなさない直接の回答は見つかりません。特定のフィールドがNULL値を持つレコードが必要なクエリがいくつかあります。私はまさにこれを行うと、それは素晴らしい作品いくつかのプロジェクト、IDEで警告なしを持って
dim query = from a in MyContext.MyTables
Where a.MyField = Nothing
Select a
:これらは、単純なSELECTクエリ、何の凝集体または左が参加していない、などですマイクロソフトでは、このMSDN Linkようなクエリを見て何かを推奨しています。最近、新しいプロジェクトが別の開発者によって作成され、上記のようなnullチェックを行ったときにIDEでこの警告が表示されます。
警告1この式は、常にNothingに評価されます)。値がnullかどうかを確認するには、 'Is Nothing'を使用することを検討してください。
プロジェクトを比較すると、それぞれ明示的オプションとオプションstrictがオンになっています。警告を無視すると、アプリの実行時に探しているレコードセットが取得されます。 =記号をISに変更すると警告が消えます。しかし、この警告はなぜ1つのプロジェクトに現れ、他のプロジェクトには現れなかったのですか? MSDNでもequals演算子を使用する例が混乱しています。
VB.NET LINQには、「等しい」キーワードもあります。私はそれをテストする方法はありませんが、おそらく代わりにそれを試してみませんか? 'a.MyFieldは何もない ' –
@Cory:' Join'節(AFAIK)でのみ使用されるコンテキストキーワードです。私はあなたがどこにでもそれを使うことができるとは思わない。 –