Me da pereza cargar las colecciones, y también porque hay tantos campos dentro de la tabla de personas, estoy escribiendo una función de proyección para recuperar solo ciertas propiedades. Funciona con propiedades, simplemente no colecciones de otras entidades. Estaría bien si fueran cargados como proxies y podría obtenerlos más tarde, pero ahora mismo se carga en nulo.Cómo usar las proyecciones de NHibernate para recuperar una colección
public IList<Person> ListTop40()
{
var list = _session.CreateCriteria(typeof(Person))
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("FirstName"))
.Add(Projections.Property("LastName"))
.Add(Projections.Property("Jersey"))
.Add(Projections.Property("FortyYard"))
.Add(Projections.Property("BenchReps"))
.Add(Projections.Property("VertJump"))
.Add(Projections.Property("ProShuttle"))
.Add(Projections.Property("LongJump"))
.Add(Projections.Property("PersonSchoolCollection"))
)
.List<IList>()
.Select(l => new Person() { FirstName = (string)l[0], LastName = (string)l[1], Jersey = (Decimal)l[2], FortyYard = (Decimal)l[3], BenchReps = (Decimal)l[4], VertJump = (Decimal)l[5], ProShuttle = (Decimal)l[6], LongJump = (Decimal)l[7], PersonSchoolCollection = (IList<Person_School>)l[8]});
IList<Person> s = list.ToList();
return s;
}
tengo alrededor de 80 propiedades, por lo que es realmente necesario en esta situación. Estoy bastante seguro de que no puedo recuperarlo con este código, pero creo que hay alguna manera con las proyecciones para poder recuperar solo 1 de muchas colecciones. – luke
in ese caso, es posible que tengas más suerte en el grupo de nhusers en los grupos de google – sirrocco
Tengo publicado allí. Si recibo una respuesta, la publicaré aquí. Gracias. – luke