使用 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方法。您使用的是将没有结果视为无效结果的查询,而如果不存在这样的用户,您的查询可能 return 没有值。

切换到一种不会抛出 return 可枚举中的任何元素的方法,然后检查 null 并优雅地处理它。

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

为什么要使用 QueryMultiple?请改用查询<>。然后在 result.first() 之前执行 result.Count()。或者做 FirstOrDefault()

我是否还建议您创建一个 class 来接收数据?

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

然后使用connection.Query("....", new...)

好看多了