2013-08-21 11 views
5

Sto utilizzando l'ultima versione di NHibernate (3.3.1.4000) da NuGet in .Net 4 progetto mirato in Visual Web Developer 2010 Express.NHibernate QueryAlias ​​Alias ​​Edizione

Quando tento di seguire degli esempi che ho visto per la definizione degli alias, ottengo un'eccezione quando li installo usando lambdas (vedi screenshot).

Shows error 'Cannot convert lambda expression to type 'string'...

Come potete vedere sto ottenendo l'errore Cannot convert lambda expression to type 'string' because it is not a delegate type.

devo riferimenti ai namespace LINQ nella parte superiore del mio codice:

using System.Linq; 
using System.Linq.Expressions; 

Dei pensieri su quello che potrebbe essere la causa del problema?

risposta

8

Per poter utilizzare una variabile come role in un'espressione, è necessario definire in primo luogo, in questo modo ...

Role roleAlias = null; // <-- these two lines are missing from your code. 
Person personAlias = null; 

var x = session.QueryOver<Role>(() => roleAlias) 
    .JoinAlias(r => r.People,() => personAlias) 
    // ... 

ISession.QueryOver<T>(...) ha quattro sovraccarichi:

  • .QueryOver<T>()
  • .QueryOver<T>(Expression<Func<T>> alias)
  • .QueryOver<T>(string entityName)
  • .QueryOver<T>(string entityName, Expression<Func<T>> alias)

A quanto pare, perché non si può capire cosa role è, è supponendo che si sta cercando di utilizzare il .QueryOver<T>(string entityName) sovraccarico, da cui il "Impossibile convertire ... digitare 'stringa'" messaggio di errore.

+0

Grazie, questa sembra essere la risposta corretta. Pensavo ci fosse qualcos'altro in corso. Non avevo capito che avevo bisogno di creare variabili per usarle come alias. Ma dopo aver letto la tua risposta sono tornato ai documenti, e abbastanza sicuro è proprio lì in 16.5. Alias ​​(http://nhforge.org/doc/nh/en/index.html#queryqueryover-aliases). – Sam