簡體   English   中英

使用dapper.net檢查空值

[英]checking for null value using dapper.net

我正在使用dapper將值讀入我在其中創建基本存儲過程的對象中。

IF EXISTS(SELECT LOWER(UT.UserID) FROM UserTable UT WHERE UT.UserID = @UserId)
BEGIN
    SELECT 
    UT.UserID,
    UT.Name, 
    UT.Surname, 
    UT.TrackingString
    FROM UserTable UT
    WHERE UT.UserID = @UserId
END

這是我的視圖模型中的代碼。

 IDbConnection connection;
        using (connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Liberty"].ToString()))
        {
            var result = connection.QueryMultiple("GetUserData", new { UserId = userId.ToLower() }, commandType: CommandType.StoredProcedure);
            user = result.Read<UserData>().First();

        }

如果選擇了列,如何檢查結果。.到目前為止,如果沒有用戶數據(如果用戶不存在),我將收到InvalidOperation異常。

使用正確的Linq方法。 您正在使用一個不將任何結果視為無效結果的查詢,而如果不存在這樣的用戶,則查詢可能不返回任何值。

切換到不會在枚舉返回中不引發任何元素的方法,然后檢查null並妥善處理。

    // snip
    user = result.Read<UserData>().FirstOrDefault();
}
if(user == null)
{
    // no such user exists, go do something about it

為什么要使用QueryMultiple? 改用Query <>。 然后只需在result.first()之前執行result.Count()。 或者做FirstOrDefault()

我是否還建議您創建一個類來接收數據?

public class User
{
    public int UserID {get; set;}
....
}

然后使用connection.Query(“ ....”,new ...)

眼睛好多了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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