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

4

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

我已经为我的用户类创建了一个存储库,其中包含几个方法(create、getbyid和update)。问题出在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和其他地方试图寻找答案,但没有结果。
1个回答

4
< p > GetById() API(以及所有其他ServiceStack.Redis Typed Client API)期望POCO在 Id 属性中具有唯一的Id。

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


3
谢谢,现在可以用了!我困扰了两个小时。 - ya.peters2016

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接