2012-09-08 16 views
5

usar ServiceStack y me gustaría para almacenar objetos como hashes en Redis y obtener un acceso a sus partes (campos) por IDS sin serializar objeto entero, así que tengo una serie de preguntas:Entidades ServiceStack nombre del campo Id

  1. ¿Hay alguna manera de usar otra propiedad luego "Id", para marcar el campo de identificación? I estoy usando convenciones de nomenclatura, donde el nombre del campo id es "class
    name + Id". Por lo tanto, en la clase de usuario habrá un campo Id. De Id. De usuario, en
    Ítem ID de elemento clase y así sucesivamente.

  2. Es la A manera de actualizar las propiedades que se han cambiado en el objeto sin serializar objeto entero en hash y de bajo nivel y sin manipulaciones con comando hash del Redis? Por ejemplo, usando algún tipo de lambdas.

 

User user=client.GetById(userId); 
user.Name="New name"; 
client.Update<User>(user,u=>u.Name); 

Respuesta

5

Sí se puede reemplazar el valor predeterminado utilizando ModelConfig con:

ModelConfig<User>.Id(x => x.UserId); 
ModelConfig<Item>.Id(x => x.ItemId); 

Esto necesita ser configurado una vez en el arranque antes de utilizar el RedisClient.

+0

Gracias, Demis. No he visto esta función antes. Un poco correcto de usar: ModelConfig .Id (x => x.UserId); ¿Y qué hay del ahorro parcial de objeto? Traté de escribirlo solo, pero estaba atrapado en árboles de expresión. El problema es que si uso árboles de expresión, tengo que usar el método .Compile(), que es una ejecución lenta y desalentadora del ahorro. Además, no quiero utilizar cadenas mágicas de nombres de propiedades para guardar propiedades en hash ... –

+0

Si esto responde a su pregunta original, márquela como respondida. Si tiene otra pregunta, debe hacer una nueva pregunta. Haga que sea obvio lo que está preguntando, por ejemplo, proporcione una muestra de código si ayuda a describir lo que está buscando. – mythz

+0

Parte N1 es respondida. Parte N2 no es respondida. La muestra del código se proporciona en la parte N2. Lo que quiero hacer: obtener el objeto User desde el redis hash, cambiar la propiedad "Name" y guardar solo la propiedad "Name" en el hash sin serializar y guardar todo el objeto User. Puedo hacer esto serializando manualmente las propiedades en cadenas y usando funciones hash de bajo nivel, pero simplemente buscando la forma más común y obvia como el código que proporcioné. –

Cuestiones relacionadas