| 

.NET C# Java Javascript Exception

6
Hallo

Ich schaue nicht nur EF an sondern auch nHibernate. Würde mir auch gefallen. Dort habe ich aber ein kleines verständnisproblem.
Im EF lade ich dein Objekt mit allen seinen Unterobjekten so.
using (ProjectContainer db = new ProjectContainer(connectString))
{
Project projekt = db.Project
.Include("Produkt")
.Include("Periode")
.Include("Phase")
.Include("Abteilung")
.Include("Chance")
.Where(t => t.ProjektID == projectId).FirstOrDefault();

return projekt;
}


Wie erreich ich das mit nHibernate?
using (ISession session = NHConfiguration.OpenSession())
{
NhProject pr = session.Query<NhProject>().Where(p => p.ProjectID == projectId).FirstOrDefault();
return pr;
}


Wenn ich hier das Objekt geladen habe steht bei den Unterobjekten immer ein {Castle.Proxiey.XXXX}. Ich will das Zeugs aber JETZT laden nicht erst beim Zugriff. Kann ich das bei der Abfrage schon machen?
News:
16.02.2012
GENiALi 2,5k 1 2 8
1 Antwort
5
Das sog. 'Eager Loading' wird bei NHibernate LINQ Queries mit Fetch gemacht.

In deinem Fall würde das so aussehen:
using (ISession session = NHConfiguration.OpenSession())
{
NhProject pr = session.Query<NhProject>()
.Where(p => p.ProjectID == projectId)
.Fetch(p=>p.Produkt)
.Fetch(p=>p.Periode)
.Fetch(p=>p.Phase)
.Fetch(p=>p.Abteilung)
.Fetch(p=>p.Chance)
.FirstOrDefault()
return pr;
}


Mehr dazu hier: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html
16.02.2012
JeffRogge 293 4
GENiALi 2,5k 1 2 8
1
Habe mir die Freiheit genommen das FirtOrDefault() ans Ende zu stellen. Sonst tut es nicht.

1000Dank für die Hilfe.
GENiALi 16.02.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH