使用 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...)
好看多了
我正在使用 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...)
好看多了