我运行 Windows 服务器版本的 Redis,然后有一个小的客户端应用程序,但我不知道如何更新数据库中已有数据类型的值
我有这个 Leader 类,如果给定 District 存在,我想更新它,否则创建一个新条目
public class Leader
{
public Employee Employee { get; set; }
public District District { get; set; }
}
public void SetLeader(District district, Employee employee)
{
using (var leaderSession = _redisClient.GetTypedClient<Leader>())
{
var leader = leaderSession.GetAll().SingleOrDefault(x => x.District.Id == district.Id);
if (leader != null)
{
leader.Employee = employee;
}
else
{
leader = new Leader{District = district, Employee = employee};
}
leaderSession.Store(leader);
}
}
但是当我这样做时,我只是在数据库中得到一个额外的条目,所以 Store 不是正确的命令,但我应该使用哪个?
我能想出的唯一解决办法是删除旧的并存储一个新的,但这似乎有点无效? (这在我的例子中并不重要,但仍然)
编辑:删除也不起作用,它仍然会创建一个新的并保留旧的。
public void SetLeader(District district, Employee employee)
{
using (var leaderSession = _redisClient.GetTypedClient<Leader>())
{
var leader = leaderSession.GetAll().SingleOrDefault(x => x.District.Id == district.Id);
if (leader != null)
{
leaderSession.Delete(leader);
}
leader = new Leader { District = district, Employee = employee };
leaderSession.Store(leader);
}
}
编辑 2 为 Leader 添加一个 Id 字段显然是区分不同行的必要条件
所以改成这样就可以了
public class Leader
{
public long Id { get; set; }
public Employee Employee { get; set; }
public District District { get; set; }
}
最佳答案
给 Leader 添加一个 Id 字段显然是区分不同行的必要条件
所以改成这样就可以了
public class Leader
{
public long Id { get; set; }
public Employee Employee { get; set; }
public District District { get; set; }
}
关于c# - 使用 C# 更新 Redis 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181439/