6

Foo hat Titel.
Bar Referenzen Foo. Ich habe eine Sammlung mit Bars.
Ich brauche eine Sammlung mit Foo.Title.Wählen Sie n + 1 Problem

Wenn ich 10 bar in der Sammlung, werde ich db 10-mal anrufen.

bars.Select (x => x.Foo.Title)

Im Moment dieses (mit NHibernate Linq und ich will es nicht fallen zu lassen) ruft Bar Kollektion.

var q = from b in Session.Linq<Bar>() 
       where ... 
       select b; 

ich lese, was Ayende sagt about this.
Eine andere verwandte question.
Ein bisschen documentation. Eine andere verwandte blog post.
Vielleicht kann helfen?
Was ist mit this?
Vielleicht MultiQuery ist was ich brauche? :/

Aber ich kann immer noch nicht ‚kompilieren‘ diese in der richtigen Lösung.

Wie wählen Sie n + 1 vermeiden?

Antwort

3

Das hat nicht funktioniert:

var q = from b in Session.Linq<Bar>().Expand("Foo.Title") 
       where ... 
       select b; 

Aber diese Art ein geholfen:

var q = from b in Session.Linq<Bar>().Expand("Foo") 
       where ... 
       select b; 

..aber jetzt, was Repository nicht weiß, verwenden geht, dass es foos auch ist geladen.
Irgendwelche Ideen, um es deutlicher zu machen?

Eine Idee ist, zu FindBarsWithFoos zu ändern (Namensgebung).

Mindestens es funktioniert.

Verwandte Themen