2016-09-13 2 views
0

ich eine Abfrage ausführen müssen, die die Datensätze wie folgt löschen:mit Nhibernate löschen und Parameter

DELETE FROM News WHERE DateRelease <= DATEADD(DAY, -60, GETDATE()) 

Das ist mein Code

public void Removehistory(Int32 daysToKeepFromNow) 
{ 
    using (ISession session = NHibernateHelper.OpenSession()) 
    { 
     session.Delete("DELETE FROM News WHERE DateRelease <= DATEADD(DAY, -" + daysToKeepFromNow + ", GETDATE())"); 
    } 
} 

aber feuern diesen Fehler ist:

Not supported for DML operations [DELETE FROM News WHERE DateRelease <= DATEADD(DAY, -60, GETDATE())]

Ich bin ziemlich neu zu nhibernate, was ist los mit dieser Abfrage?

+0

SQL-Syntax sieht auf den ersten Pass in Ordnung. Ich würde einige weitere Tags wie C# hinzufügen – scsimon

Antwort

1

weil session.Delete keine Methode ist zum Ausführen von Abfragen: Hybernate Session

sollten Sie stattdessen session.createQuery verwenden und dann query.executeUpdate

Query query = session.createQuery("delete News where DateRelease <= (sysdate -60)"); 

int result = query.executeUpdate(); 

if (result > 0) { 
    System.out.println("Old news removed"); 
}