我运行Redis的Windows服务器版本,然后有一个小客户端应用程序,我无法找到如何更新数据库中已有的数据类型值
我有这个Leader课程我想更新,如果它存在给定的区域,否则创建一个新的条目
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; }
}
答案 0 :(得分:1)
向Leader添加Id字段显然有必要区分不同的行
因此将其更改为此作品
public class Leader
{
public long Id { get; set; }
public Employee Employee { get; set; }
public District District { get; set; }
}