この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3654|答える: 0

[出典] EF SQL文は自動的にIS NULLまたはIS NOT NULLを生成します

[リンクをコピー]
掲載地 2023/06/21 22:42:18 | | | |
要件:EFがlinq to sqlやlambda式を使ってデータベースをクエリする場合、EFが生成するSQL文はIS NULLまたはNOT NULL条件の追加に役立ちます。

例1:

このようなSQL文を生成します:

選ぶ
    [Extent2]。 [ユーザーステータス] AS [UserStatus],
    [エクステント1]。 [同] [同]
    [DBO]より。 [メール情報] AS [拡張1]
    インナージョイン [DBO]。 [アカウント] [Extent2] ON ([Extent1].[ アドレス] = [Extent2]。 [メール]) または(([Extent1].[ アドレスはnullです)および([Extent2].[ メールは無効です))



例2:

このようなSQL文を生成します:

選ぶ
    [エクステント1]。 [同] [同]
    [エクステント1]。 [名前] [名前]として、
    [エクステント1]。 [ParentId] [ParentId]として、
    [エクステント1]。 [位置] AS [ポジション]、
    [エクステント1]。 [_CreateTime] [_CreateTime]のように、
    [エクステント1]。 [_UpdateTime] [_UpdateTime]
    [DBO]より。 [分類] AS [拡張1]
    ここで ([Extent1].[ 名前] IN (N'Android', N'Solaris')) AND ([Extent1].[ 名前はnullではありません)



EFがこれらの追加のNULL条件を生成するのを避けたい場合は、以下の方法を参照してください。

DbContextConfiguration.UseDatabaseNullSemanticsプロパティを設定してください

2つのオペランドを比較する際にデータベースのヌルセマンティクスを表示するかどうかを示す値を取得または設定し、両方ともヌルである可能性が高いです。 デフォルト値はfalseです。

コードは以下の通りです:


例えば:
もしUseDatabaseNullSemanticsが真であれば、(operand1 == operand2)は(operand1 = operand2)に変換されます。
UseDatabaseNullSemanticsがfalseの場合は、(((operand1 = operand2) and (NOT (operand1 is null または operand2 is null))))または(((operand1 is null) and (operand2 is NULL))に変換されます。

文書化(ドキュメントの説明に誤りがあります):ハイパーリンクのログインが見えます。

フィールドで[Required]属性を追加できます

EFがオブジェクトプロパティに[Required]属性を追加した後は、実際にはデータベース内で属性(フィールド)がNULLになることは許されません。移行コマンドを実行した後は、フィールドがNULLになることは許されませんフィールドはデータベース内でNULLであってはならないため、EFはそのフィールドで生成されるSQL文にNULLチェックを自然と生成しません。

参考:ハイパーリンクのログインが見えます。






先の:ASP.NET Core(21)の設定オプションがAddOptionsとConfig(構成)の違いです
次に:ウェブ開発用のajaxフックはすべてのXMLHttpRequestリクエストを傍受します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com