2013-02-04 22 views
-9

我已經瞭解到,DBNull & C#正常null是完全不同的東西和C#對待DBNull.Value一些奇怪的隨意的事情,但將數據庫對待C#null作爲一種價值是什麼?如果我在數據庫中插入C#'NULL',數據會是什麼?

數據庫會將C#null視爲空或字符串還是一些隨機事物?

+2

空將在數據庫空。 –

+2

取決於您的數據訪問層。 EF將C#null映射到sql null。 – jrummell

+9

-1,你爲什麼不試試? – gdoron

回答

2

這取決於您用來訪問數據庫的內容。

  • 實體框架將映射數據庫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
相關問題