2011-01-08 12 views
1

dies mein CodeNHibernate .NET für Oracle 10g „konnte nicht ausgeführt werden Abfrage“

Ich möchte falsch wissen?

public IList listdataserviceplan(String custid) 
{ 
    using (ISession session = NHibernateHelper.OpenSession()) 
    { 
     string query = ” select a.ServicePlanId as ServicePlanId , 
           a.ServiceDetail as ServiceDetail,” 
      + ” a.DateServiceFix as DateServiceFix ,a.DateService as DateService,” 
      + ” a.CaseNotSupport as CaseNotSupport ,a.ServiceChangeName as ServiceChangeName,” 
      + ” a.DateServiceNew as DateServiceNew ,a.MaterialChange as MaterialChange,” 
      + ” a.ServiceGuarantee as ServiceGuarantee ,a.ServiceMaintenance as ServiceMaintenance,” 
      + ” a.ServiceCharge as ServiceCharge” 
      + ” from BicIsu.Core.Domain.ServicePlan as a” 
      + ” where 1=1″ 
      + ” and a.CustId = ‘” + custid + “‘ ” 
      + ” order by a.ServicePlanId”; 

     var cons = session.CreateQuery(query).List(); 
     return cons; 
    } 
} 
+0

Funktioniert die Abfrage, wenn Sie sie manuell außerhalb von NHibernate ausführen? –

Antwort

0

Ich sehe den Fehler nicht, aber ich wette, es hat etwas mit diesen überkomplizierten magischen Zeichenfolgen zu tun. Versuchen:

string query = @"select a.ServicePlanId, 
         a.ServiceDetail, 
         a.DateServiceFix, 
         a.DateService, 
         a.CaseNotSupport, 
         a.ServiceChangeName, 
         a.DateServiceNew, 
         a.MaterialChange, 
         a.ServiceGuarantee, 
         a.ServiceMaintenance, 
         a.ServiceCharge 
       from ServicePlan as a 
       where 1=1 
       and a.CustId = :custId 
       order by a.ServicePlanId"; 

var result = session.CreateQuery(query) 
        .SetParameter("custId", custid) 
        .List(); 

FYI, Ad-hoc mapping with NHibernate.

0

wahrscheinlich nicht der beste Weg, um eine HQL-Abfrage zu schreiben. Warum verwenden Sie nicht die StringBuilder-Klasse? wird es so etwas wie dieses:

var hqlQuery= new StringBuilder(); 
hqlQuery.Append("select a from ClassA"); 
hqlQuery.AppendFormat("where a.Id={0}",idVal); 

return session.List<ClassA>(hqlQuery.toString()); 

Ich weiß, das ist nicht die Antwort. aber wird dir definitiv mit dem Code helfen.

Nun zu Ihrem Problem. Was ist der Fehler, den Sie bekommen? Löst diese Abfrage überhaupt aus oder erhalten Sie eine Ausnahme?

Verwandte Themen