2011-01-04 6 views
4

ich den folgenden Code haben:Linq to NHibernate Distinct() "Expression Typ nicht unterstützt" Fehler

var data = (from v in this.GetSession().Query<WorkCellLoadGraphData>() 
        where v.WorkCellId == "13" 
        select 
         new WorkCellLoadGraphData 
          { 
           RowId = v.RowId, 
           WorkCellId = v.WorkCellId, 
           WorkCellName = v.WorkCellName, 
           WorkCellGroupId = v.WorkCellGroupId, 
           WorkCellGroupName = v.WorkCellGroupName 
          }); 
     return data.Distinct(); 

Wenn ich nicht nennen die distinct() Erweiterungsmethode, ich habe überhaupt keine Probleme. Allerdings, wenn ich rufe tun, um die Distinct() -Methode, bekomme ich folgende Fehlermeldung:

Expression type 10005 is not supported by this SelectClauseVisitor.

Nach einiger Suche wir auf diese kamen:

https://nhibernate.jira.com/browse/NH-2380

Aber wie man sehen kann ich nicht zurückkehren ein anonymer Typ

Ist noch jemand auf dieses Problem gestoßen? Wenn ja, wie hast du es gelöst?

David

+0

Das distinkte "funktioniert", wenn ich die Zuordnungen nicht "aufzähle", d. H. Wenn ich select v verwende, würde distinct keine Probleme verursachen. – DavidS

Antwort

0

Konnte das funktionieren? Wenn Sie einen anonymen Typ in der Abfrage verwenden, ermöglichen Sie NHibernate, die eindeutige Abfrage in der Datenbank vorzunehmen. Wenn Sie einen eigenen Typ verwenden, muss der Vergleich mit der Methode Equals der Klasse verwendet werden.

+0

Ich bin nicht sicher, ob das funktionieren würde, da ich nicht mehr mit NHibernate arbeite. Aber hoffentlich wird das jemandem helfen. – DavidS