2015-07-07 10 views
8

Ich benutze dapper ORM.So ich zwei Regeln verwenden Abfrage & QuerySingle. Abfrage gibt die Liste zurück & QuerySingle gibt das einzelne Objekt zurück.Bool Typ Rückgaberegel in Dapper

Also, ich möchte einen Bool-Typ erhalten. (Eigentlich ein Bool wahr oder falsch ist Rekord bekommen ich wollte)

Meine Suche

public IEnumerable<T> Query<T>(string SqlString) where T : class 
    { 
     return this.conn.Query<T>(SqlString); 
    } 

So, wie kann ich Bool Typ Rückkehr schreiben ?

+0

Was gibt Ihre SQL-Abfrage tatsächlich zurück? – Jonesopolis

+2

Wenn Sie 'bool' als generischen Typ verwenden möchten, verwenden Sie nicht die' class' Einschränkung. – juharr

Antwort

8

Also, ich möchte einen Bool-Typ bekommen. (Eigentlich wollte ich ein Bool bekommen, ist wahr oder falsch Rekord)

Sie eine Methode wie folgt schreiben:

public bool GetBooleanValue(string sql) 
{ 
    return the_connection.Query<bool>(sql).FirstOrDefault(); 
} 

Die Schönheit über die FirstOrDefault ist, dass, wenn Ihre Abfrage gibt eine leere Zeile , Dapper gibt Ihnen false. Dieser vorgeschlagene Code funktioniert, solange Ihre Abfrage einen Wert zurückgibt, der von Ihrem Datenprovider in einen booleschen Wert übersetzt werden kann. Im Falle von SQL Server würden Sie erhalten:

  • TRUE für GetBooleanValue("select 1");
  • FALSCH für GetBooleanValue("select 0");

wo1 und 0 Werte aus einer Tabellenspalte von boolean-Typ sind.

Sie können den Code sogar verwenden, wenn Sie testen möchten, ob etwas existiert oder eine Gruppe von Werten existiert, etwa GetBooleanValue("select COUNT(*) from the_table where the_column='some_filter'").

Verwandte Themen