[英]How to differenciate between NULL data and 0 in sqlite-net?
我正在使用Xamarin
iOS應用程序。 我正在使用sqlite-net ORM與我的數據庫進行交互。
使用Integer列,ORM返回Int32
值。 但是,此列中的值可以為NULL
。 我注意到如果是這種情況,它將返回0而不是NULL
因為不可能將int設置為NULL
。
例如,使用以下代碼:
public class Client
{
public Client ()
{
}
[PrimaryKey, Column("ID")]
public string ID{ get; set;}
public string FirstName{ get; set;}
public string LastName{ get; set;}
public int Age{ get; set;}
}
如果ID是正確的,但是FirstName,LastName和Age設置為NULL
,則返回的對象在FirstName和LastName字段中將為null,這是合乎邏輯的。 但是“年齡”將設置為零。 所以我不知道該值是NULL
還是真正的0。有沒有辦法區分這些情況?
理想情況下,您的Client類告訴我們“年齡”是不可為空的屬性。 但是重要的是要意識到,“年齡”是一個整數,實際上是一個值類型。
值類型不能包含空值。 除非與“?”結合使用 或已經指出的“ Nullable <>”。
在.NET中,字符串實際上不是值類型,而是引用類型。
很巧,這就是為什么您在字符串屬性上獲得null值而在整數屬性上卻沒有null的原因。
要注意的另一件事是,SQLite.NET默認情況下會創建可為空的列,以強制非可為空的列是在屬性上方添加屬性:[NotNullAttribute]。
允許從數據庫返回“ Age”為null的唯一原因是編寫以下屬性:
public class Client
{
public Client ()
{
}
public Nullable<int> Age{ get; set;}
//public int? Age { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.