c# - 为什么 Redis C# 客户端方法 .getById() 返回 null?

标签 c# asp.net redis servicestack repository-pattern

我正在使用 Asp.Net MVC 构建一个简单的博客应用程序,我想使用 Redis 数据库。

我为我的用户类创建了一个存储库,其中包含一些方法(创建、getbyid 和更新)。问题是 GetById(long id) 方法。

using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;
using Domain.Entities;
using RedisDataLayer.AbstractRepository;
using System.Linq;

namespace RedisDataLayer.ConcreteRepository
{
    public class UserRepository : IUserRepository
    {
        private readonly IRedisClient _redisClient;

        public UserRepository(IRedisClient redisClient)
        {
            _redisClient = redisClient;
        }

        public User Create(User user)
        {
            var redisUsers = _redisClient.As<User>();

            user.UserId = redisUsers.GetNextSequence();
            redisUsers.Store(user);

            return user;
        }



        public User GetById(long id)
        {
            var redisUsers = _redisClient.As<User>();

            User returnUser;

            returnUser = redisUsers.GetById(id);

            return returnUser;
        }

        public User Update(User user)
        {
            var redisUsers = _redisClient.As<User>();

            User savedUser = redisUsers.GetById(user.UserId);


            savedUser.Username = user.Username;
            savedUser.Password = user.Password;
            savedUser.UserId = user.UserId;

            foreach (var blogId in user.BlogIds)
            {
                savedUser.BlogIds.Add(blogId);
            }

            redisUsers.Store(savedUser);

            return savedUser;
        }
    }
}

为什么这个方法 returnUser = redisUsers.GetById(id); 总是返回 null?我一直试图在 StackOverflow 和其他地方找到答案,但我找不到。

最佳答案

GetById() API(以及所有其他 ServiceStack.Redis 类型化客户端 API)期望 POCO 在 Id 属性中具有唯一的 Id。

因此,您应该更改用户模型以使用 Id 而不是 UserId

关于c# - 为什么 Redis C# 客户端方法 .getById() 返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52104436/

相关文章:

c# - 为 LINQ/Lambda 创建 OrderBy 表达式

c# - 在 mvc 3 中为嵌套类的 CRUD 创建模型/ View

ruby-on-rails-3 - 在 Rails 应用程序上将 HASH 保存到 Redis

Node.js + Redis 内存泄漏。难道我做错了什么?

c# - 在密码强度验证器中检查字符时,正则表达式似乎无法识别和计数

c# - 将 DependencyProperty 的值设置为 ViewModel 属性

c# - REST API 健康检查

c# - Roles.Enabled 为 true,即使 roleManger.enabled 设置为 false

asp.net - 使用 F5 使用单个域 url 公开多个 IIS Web 应用程序

spring-boot - 在 spring boot 中启用 Redis 缓存