1

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; }
}
4

1 に答える 1

1

異なる行を区別するために、リーダーに Id フィールドを追加することが明らかに必要でした

したがって、これに変更すると機能します

public class Leader
{
    public long Id { get; set; }
    public Employee Employee { get; set; }
    public District District { get; set; }
}
于 2013-01-06T12:48:54.517 に答える