Tengo una relación padre/hijo asignada con un conjunto de muchos a muchos.NHibernate Criteria Collection Contiene
public class Parent
{
public ISet<Child> Children { get; set; }
}
public class Child {}
public class ParentMap : ClassMap<Parent>
{
HasManyToMany(x => x.Children)
.AsSet();
}
¿Cómo puedo escribir una consulta para seleccionar todos los elementos principales que contienen un elemento secundario dado? Me hubiera adivinado que sería algo como esto, pero no existe esta API:
Session.CreateCriteria<Parent>()
.Add(Expression.Contains("Children", child)
.List<Parent>();
no puedo por la vida de mí encontrar la respuesta en cualquier lugar. Mi cerebro no funciona completamente hoy y Google me ha fallado hasta ahora.
Ya, pensé en eso, pero algo sobre la comparación de ID en NHibernate parece incorrecto. Sé que es estético, por lo que me gustaría saber si hay otra forma. –
¿Por qué está mal? El propósito de Id es identificar de manera única sus objetos en el DB. – RKitson
Bueno, así es, el objetivo de la identificación es decirle a * NHibernate * cómo identificar de manera única mis entidades para que pueda tratar con los objetos. Si Child fuera una relación unaria de Parent, diría Expression.Eq ("Child", child) y no diría nada sobre la identificación. Sé que estoy siendo quisquilloso aquí, me imaginé que existía algo en la API de Criteria para Contener y que podría usarse como todas las demás comparaciones de entidades. –