[fix] 修正GetAll时没有接受null数据的问题。fix: https://gitee.com/NewLifeX/NewLife.Redis/issues/ICH8B9

This commit is contained in:
智能大石头 2025-06-23 21:19:39 +08:00
parent abc755279d
commit 45f840fad2
2 changed files with 27 additions and 0 deletions

View File

@ -1084,6 +1084,10 @@ public class RedisClient : DisposeBase
{
dic[keys[i]] = (T?)Host.Encoder.Decode(pk, typeof(T));
}
else if (rs[i] == null)
{
dic[keys[i]] = default;
}
}
return dic;

View File

@ -583,4 +583,27 @@ public class RedisTest
ic.Remove(key);
}
[Fact]
public void GetAllWithNull()
{
var rds = _redis;
var user = new User { Name = "NewLife" };
User user2 = null;
rds.Set("user", user, -1);
rds.Set("user2", user2, 3600);
var uservalue = rds.Get<User>("user");
var user2value = rds.Get<User>("user2");
var keys = new[] { "user", "user2" };
var values = rds.GetAll<User>(keys);
// 应该返回2个值但是GetALl()这里只返回一个key的值
Assert.True(values.Count >= 2);
Assert.NotNull(values["user"]);
Assert.Null(values["user2"]);
Assert.Equal(user.Name, values["user"].Name);
}
}