Ich bin faul laden der Sammlungen, und auch weil es so viele Felder in der Person Tabelle gibt, schreibe ich eine Projektionsfunktion nur bestimmte Eigenschaften abrufen. Es funktioniert mit Eigenschaften, nur nicht mit Sammlungen anderer Entitäten. Es würde mir gut gehen, wenn sie als Proxies geladen würden und ich sie später holen könnte, aber im Moment lädt sie nur in null.So verwenden Sie NHibernate Projektionen zum Abrufen einer Sammlung
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;
}
Ich habe ungefähr 80 Eigenschaften, also ist es wirklich notwendig in dieser Situation.Ich bin mir ziemlich sicher, dass ich es mit diesem Code nicht abrufen kann, aber ich denke, dass es einen Weg mit Projektionen gibt, nur eine von vielen Sammlungen abzurufen. – luke
in In diesem Fall haben Sie vielleicht mehr Glück in der Nhusers-Gruppe auf Google-Gruppen – sirrocco
Ich habe es hat dort gepostet. Wenn ich eine Antwort bekomme, dann poste es hier. Vielen Dank. – luke