使用Servicestacks c#redis client如何设置URN?

时间:2014-04-22 14:26:45

标签: c# servicestack servicestack.redis

我的代码如下:

public Vehicle NewOrUpdate(Vehicle vehicle)
{
        try
        {
            RedisManager.ExecAs<Vehicle>(r =>
            {
                r.Store(vehicle); //save new or update
            });
        }
        catch (Exception ex)
        {
            ErrorMessage = ex.ToString();
            HasError = true;
            throw;
        }
        return vehicle;
}

如何为要添加的项目设置URN?我在对象上看到了CreateUrn扩展名,但我没有看到明确设置它的方法。默认情况下,它会创建&#34; urn:vehicle:Id&#34;的URN。我喜欢拥有类似于&#34; urn:vehicles- {MySpecialId}的URN:Id&#34;有可能控制这个吗?

或者另一种方式来问这个...... 我可以为我存储的对象组成自己的URN吗?

Vehicle v = new Vehicle();
v.CreateUrn = "urn:mine";

RedisManager.ExecAs<Vehicle>(r =>
{
   r.Store(v); 
});

1 个答案:

答案 0 :(得分:1)

如果你知道在哪里看,它看起来实际上并不难。 我只是用我想要的任何骨架创建一个列表:

 string urn = String.Format("urn:dealer:{0}:vehicles", dealer.DealerId);
 var vehicleclient = client.As<Vehicle>();
 var vehicleList = vehicleclient.Lists[urn];
 foreach (var vehicle in dealer.Vehicles)
 {
    vehicleList.Add(vehicle);
 }

将项目添加到自定义列表,然后使用以下命令调用项目:

List<Vehicle> returnValue = new List<Vehicle>();
string urn = String.Format("urn:dealer:{0}:vehicles",DealerId);
using (var client = new RedisClient("192.168.42.128", 6379))
{
    returnValue = client.As<Vehicle>().Lists[urn].ToList();
}