簡體   English   中英

在sqlite-net中,如何區分NULL數據和0?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM