-10

DBNull& C# の法線nullはまったく異なるものであり、C# はDBNull.Value奇妙なランダムなものとして扱われることを学びましたが、データベースは C#nullを値としてどのように扱いますか?

データベースは C#nullを空、文字列、またはランダムなものとして扱いますか?

4

1 に答える 1

2

データベースへのアクセスに使用するものによって異なります。

  • Entity Framework はデータベースnullを C#nullにマップしますが、実際にはまったく使用DBNullしません。
  • SQL DAO (たとえば、System.Data.SqlClient.SqlCommand) はDBNull、データベースを表すために使用しnull、何かの欠如を表すために `null を使用します。

他のデータ アクセス層は、異なる標準またはこれらのいずれかを使用する場合があります。

たとえば、次のクエリです。

SELECT NULL FROM whatever WHERE 1=2
SELECT NULL FROM whatever WHERE 1=1

以下の呼び出し時。

Entity Framework (を使用from .. select)

  • 空の結果セット (IEnumerable値を返さないもの)
  • を含む単一の結果セットnull

Entity Framework (を使用First())

  • 例外、結果がないため
  • null

Entity Framework (を使用FirstOrDefault())

  • null
  • null

SQL DAO (を使用ExecuteScalar())

  • null
  • DBNull
于 2013-02-04T20:01:02.277 に答える