2013-08-21 12 views
5

Ich verwende die neueste Version von NHibernate (3.3.1.4000) von NuGet in .Net 4 zielgerichtetes Projekt in Visual Web Developer 2010 Express.NHibernate QueryOver Alias ​​Problem

Wenn ich versuche, Beispielen zu folgen, die ich zum Definieren von Aliasen gesehen habe, bekomme ich eine Ausnahme, wenn ich sie mit lambdas einrichte (siehe Screenshot).

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

Wie Sie erhalte ich den Fehler Cannot convert lambda expression to type 'string' because it is not a delegate type sehen kann.

Ich habe Verweise auf die LINQ-Namespaces in der Spitze von meinem Code:

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

Irgendwelche Gedanken auf, was könnte das Problem verursachen?

Antwort

8

Um eine Variable wie role in einem Ausdruck zu verwenden, müssen Sie es zunächst definieren, wie so ...

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>(...) vier Überlastungen hat:

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

Offenbar, weil es kann nicht herausfinden, was role ist, es ist vorausgesetzt, Sie versuchen, die .QueryOver<T>(string entityName) Überlastung zu verwenden, damit die „Kann nicht konvertieren ...‚string‘zu geben“ Fehlermeldung.

+0

Danke, das scheint die richtige Antwort zu sein. Ich dachte, da wäre noch etwas anderes los. Ich wusste nicht, dass ich Variablen erstellen musste, um sie als Aliase zu verwenden. Aber nachdem ich deine Antwort gelesen hatte, ging ich zurück zu den Unterlagen, und tatsächlich ist es genau dort in 16.5. Aliase (http://nhforge.org/doc/nh/en/index.html#queryqueryover-aliases). – Sam

Verwandte Themen