[解決済み] エンティティフレームワークでNULL値を問い合わせるにはどうすればよいですか?
質問
次のようなクエリを実行したいのですが
var result = from entry in table
where entry.something == null
select entry;
を取得し
IS NULL
が生成されます。
編集しました。 最初の2つの回答の後、私は私がEntity Frameworkを使用していることを明確にする必要性を感じています。 とLinq to SQLではありません。オブジェクト.Equals()メソッドはEFで動作しないようです。
編集No.2。
上記のクエリは意図したとおりに動作します。それは正しく生成されます
IS NULL
. しかし、私のプロダクションコードは
value = null;
var result = from entry in table
where entry.something == value
select entry;
で、生成されたSQLは
something = @p; @p = NULL
. EFは定数式を正しく変換しますが、変数が含まれる場合は通常の比較と同じように扱われるようです。実際に理にかなっています。私はこの質問を閉じます。
どのように解決するのですか?
Linq-to-SQLの回避策です。
var result = from entry in table
where entry.something.Equals(value)
select entry;
Linq-to-Entities(痛い!)に対するワークアラウンド。
var result = from entry in table
where (value == null ? entry.something == null : entry.something == value)
select entry;
これは私が何度か噛まれたことのある厄介なバグです。
のバグレポートをご覧ください。
にアクセスし、このバグがあなたにも影響したことをマイクロソフトに知らせてください。
編集します。 このバグはEF 4.5で修正されています。 ! このバグに投票してくれた皆さん、ありがとうございました!
後方互換性のために、これはオプトインになります - 手動で設定を有効にして
entry == value
を動作させるには、手動で設定を有効にする必要があります。 この設定が何であるかはまだわかりません。 ご期待ください。
2を編集します。 によると この記事 によるもので、EFチームによるものです。 この問題はEF6で修正されました! Woohoo!
3値ロジックを補うために、EF6のデフォルトの動作を変更しました。
これは、古い動作に依存する既存のコードが
(
null != null
ただし、変数と比較するときのみ)
は、その動作に依存しないように変更するか、あるいは
UseCSharpNullComparisonBehavior
を false に設定して古い壊れた動作を使用する必要があります。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] VB.NETで線を引く方法
-
[解決済み] .Netの配列のLongLengthの目的は何ですか?
-
[解決済み] 不変量名 'System.Data.SqlClient' を持つ ADO.NET プロバイダに対応する Entity Framework プロバイダが見つかりませんでした。
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] ランダムな英数字の文字列を生成するにはどうすればよいですか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] Entity Frameworkにおける最速の挿入方法
-
[解決済み] Entity Frameworkで生成されたSQLを表示するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] COMExceptionエラー80040154を修復する方法は?
-
[解決済み] 16進数値0x00は無効な文字です。
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] WPFの場合、x:Name属性とName属性の違いは何ですか?
-
[解決済み] Visual Studioの「Any CPU」ターゲットはどういう意味ですか?
-
[解決済み] C#や.NETで最悪のガチャは何ですか?[クローズド]
-
[解決済み] LINQのNULL列による順序付け(順序は昇順でNULLは最後)。