Estoy usando NHibernate y tengo problemas con esta consulta ... Tengo un elemento de clase que quiero buscar con su Id. Todo muy bien. Sin embargo, también quiero que una propiedad bool en la clase Item se establezca en verdadero si se establece alguna otra condición. Específicamente, esta propiedad se denomina IsMarked, indicando si el artículo está marcado/fijo/marcado para el usuario que lo solicitó, y esta información se establece en una tabla que proporciona la relación entre el artículo y el usuario.Valor de configuración basado en una tabla diferente en la consulta de NHibernate
Actualmente estoy obteniendo el artículo y luego buscando la referencia, actualizando la propiedad a verdadero si se puede encontrar la referencia. ¿Puedo hacer esto en una consulta en su lugar?
var item = Session.Get<Item>(itemId);
var flaggedResult = Session.CreateCriteria<ItemWithUserFlag>()
.Add(Restrictions.Eq("User.Id", userId))
.Add(Restrictions.Eq("Item", item))
.List<ItemWithUserFlag>();
if (flaggedResult.Count > 0)
item.IsMarked = true;
return item;
¿Cómo se asignan las clases? ¿Hay una repetición de muchos a muchos entre Usuario y Artículo? –
Uso Fluent para las asignaciones. Hay una relación de muchos a muchos representada en una clase separada ItemWithUserFlag. El usuario no tiene una relación directa con el artículo, y el artículo no tiene una relación directa con el usuario. ItemWithUserFlag tiene una Referencias establecida para Usuario y para Artículo. – stiank81