gpt4 book ai didi

c# - 使用 C# 更新 Redis 中的值

转载 作者:IT王子 更新时间:2023-10-29 06:15:54 26 4
gpt4 key购买 nike

我运行 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com