架构师_程序员_码农网

ユーザー名 パスワード取得
会員登録

QQ登录

ワンステップ

検索
閲覧:1827|回答: 0
打印 上一主题 下一主题

[ドキュメント】EF SQL文の自動生成 IS NULL または IS NOT NULL

[コピーリンク]EF SQL文が自動的にIS NULLまたはIS NOT NULLを生成します。
uggブーツ販売
要件:EFがlinq to sqlまたはラムダ式を使用してデータベースにクエリを実行する場合、EFによって生成されたSQL文は、いくつかのIS NULLまたはIS NOT NULL条件を追加するのに役立ちます。



以下のSQL文が生成されます:

SELECT
[Extent2].[UserStatus] AS [UserStatus], [Extent1].
[Extent1].[Id] AS [Id]
FROM [dbo].[EmailInfo] AS [Extent1].
INNER JOIN [dbo]. [Account] AS [Extent2].[Account] AS [Extent2] ON ([Extent1].[Address] = [Extent2].[Eメール]) OR (([Extent1].[Address] IS NULL) AND ([Extent2].[Email] IS NULL))



例2:

以下のSQL文が生成されます:

SELECT
[Extent1].[Id] AS [Id], [Extent1].
[Extent1].[Name] AS [Name], [Extent1].
[Extent1].[ParentId] AS [ParentId], [Extent1].
[Extent1].[位置] AS [位置], [Extent1].
[Extent1].[CreateTime] AS [_CreateTime], [Extent1].
[Extent1].Extent1].の[_UpdateTime] AS [_UpdateTime].
FROM [dbo].[分類] AS [Extent1]。
WHERE ([Extent1].[Name] IN (N'Android', N'Solaris')) AND ([Extent1].[Name] IS NOT NULL)



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

DbContextConfiguration.UseDatabaseNullSemantics プロパティを設定します。

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

コードは以下のとおりです:


例えば
UseDatabaseNullSemantics が true の場合、(operand1 == operand2) は (operand1 = operand2) に変換されます;
もし UseDatabaseNullSemantics が false ならば、(((operand1 = operand2) AND (NOT (operand1 IS NULL OR operand2 IS NULL)) OR ((operand1 IS NULL) AND ((operand2)).operand2 IS NULL))。

ドキュメント(ドキュメントの紹介に誤りがあります): https://learn.microsoft.com/zh-cn/dotnet/api/system.data.entity.infrastructure.dbcontextconfiguration.usedatabasenullsemantics?view=entity-framework-6.2.0。

フィールドへの[Required]プロパティの追加

EFがオブジェクト属性に[Required]機能を追加すると、実際にその属性(フィールド)がデータベースでNULLになることを禁止し、フィールドがNULLになることを禁止するマイグレーションコマンドを実行します。 フィールドがデータベースでNULLになることが禁止されているので、EFがフィールドのために生成されるSQLステートメントでいくつかのNULLチェックを生成しないのは自然なことです。

参照: https://learn.microsoft.com/zh-cn/dotnet/api/system.componentmodel.dataannotations.requiredattribute?view=net-7.0






前の記事:ASP.NET Core (ゼクシィ) 設定オプション AddOptions と 設定区別
次の記事:XMLHttpRequestリクエストを全てインターセプトするajax-hookのWeb開発
コード農家ネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
投稿するにはログインが必要です ログイン会員登録

このバージョンのインテグラルルール


免責事項:コード・ファーマー・ネットワークによってリリースされたすべてのソフトウェア、プログラミング資料または記事は、研究および調査目的に限定されています。本サイトはネットワークからの情報であり、著作権紛争は本サイトとは関係ありません。あなたは、ダウンロードから24時間以内に完全にコンピュータから上記のコンテンツを削除する必要があります。もしあなたがこのプログラムを気に入ったなら、正規のソフトウェアをサポートし、登録を購入し、より良い正規のサービスを受けてください。もし著作権侵害があれば、メールでご連絡ください。

メール To:help@itsvse.com

QQ|( 鲁ICP备14021824 号-2)|サイトマップ

GMT+8, 2024-9-19 06:17

クイック返信トップに戻る一覧に戻る