Redis の Windows サーバー バージョンを実行していて、小さなクライアント アプリケーションを使用していますが、データベースに既にあるデータ型の値を更新する方法がわかりません。
特定の地区に存在する場合は更新したいこのリーダークラスがあり、そうでない場合は新しいエントリを作成します
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リーダーにIDフィールドを追加することは、異なる行を区別するために明らかに必要でした
したがって、これに変更すると機能します
public class Leader
{
public long Id { get; set; }
public Employee Employee { get; set; }
public District District { get; set; }
}