簡體   English   中英

使用C#更新Redis中的值

[英]Updating value in Redis with C#

我運行Windows服務器版本的Redis,然后有一個小的客戶端應用程序,但無法找到如何更新數據庫中已有數據類型的值

我有這個領導班級,我想更新它是否存在於給定的學區,否則創建一個新條目

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM