Lassen Sie uns annehmen, dass ich diese einfache n-n
Tabelle haben (zwischen people
und product
):Zeilenanzahl von eindeutigen IDs
//id people_id product_id
1 1 1
2 1 3
3 1 5
4 2 1
Und dieser Klasse (bereits abgebildet):
public class PeopleProduct
{
public virtual int TableId { get; set; } //Mapped to id
public virtual int PeopleId { get; set; } //Mapped to people_id
public virtual Product Product { get; set; } //Mapped to product_id
}
Wie Sie können siehe, es gibt zwei people
, die erste mit 3 products
und die zweite mit nur 1.
Wie kann ich die Anzahl der eindeutigen people_id
mit CreateCriteria erhalten?
ich zur Zeit versucht, dies zu verwenden: mit
var crit = StatelessSession.CreateCriteria<PeopleProduct>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Count<PeopleProduct>(c => c.PeopleId))
.Add(Projections.Group<PeopleProduct>(g => g.PeopleId)));
var count = Convert.ToInt64(crit.UniqueResult());
Aber es gibt immer eine Liste mit einem Array [zählen, id]:
[3, 1] and [2, 1]
Dies ist nicht die beste Ergebnis, da diese Tabelle tausende von people_id
zurückgeben könnte.
Danke, ich wusste davon, aber ich benutzte 'CreateCriteria' für andere Abfragen (angepasst von jeder Tabelle). Wenn Sie über 'QueryOver' sprechen, gibt es Unterschiede bei der Performance zwischen beiden? –