2014-04-22 55 views
0

我有這樣的代碼:使用ServiceStacks c#redis客戶端如何設置URN?

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擴展,但我沒有看到明確設置它的方法。默認情況下,它會創建一個「urn:vehicle:Id」的URN。我喜歡有一個URN像「urn:vehicles- {MySpecialId}:Id」是否可以控制這個?

或另一種方法來問這個...... 我可以爲我存儲的對象組成我自己的URN嗎?

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

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

貌似答案的一部分可能be:client.SetEntry(「urn:vehicle-727」,vehicle.CreateUrn ()); – user2033791

回答

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