-10

我了解到DBNull& C# normalnull是完全不同的东西,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

当被以下调用时:

实体框架(使用from .. select

  • 空结果集(IEnumerable从不返回值)
  • 单个结果集包含null

实体框架(使用First()

  • 例外,因为没有结果
  • null

实体框架(使用FirstOrDefault()

  • null
  • null

SQL DAO(使用ExecuteScalar()

  • null
  • DBNull
于 2013-02-04T20:01:02.277 回答