2009-04-08 12 views

risposta

13

Proprio come ha detto cundh2o, è specifico per DBMS. Ma puoi creare una sottoclasse della classe Order e definire il tuo ordine personalizzato. Ad esempio, per SQL Server:

public class RandomOrder: Order { 
    public RandomOrder() : base("", true) {} 
    public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery) { 
     return new SqlString("newid()"); 
    } 
} 
+0

2.1.2 compatibile: public override SqlString ToSqlString (criteri ICriteria, ICriteriaQuery criteriaQuery) {return new SqlString ("newid()"); } – mxmissile

+0

@mxmissile: saluti, ho aggiornato la mia risposta. –

+1

L'uso di NewID come questo porta a prestazioni terribili su tavoli di dimensioni medio-grandi. – UpTheCreek

1

Se non si è limitati a utilizzare ICriteria, si consiglia di utilizzare HQL invece di selezionare una riga casuale, poiché potrebbe fornire maggiore flessibilità per utilizzare la funzione Random fornita dal provider db.

 

IQuery q = NHibernateSession.CreateQuery("your hql statement here") 
 
Problemi correlati