2017-07-28 5 views
1

Ich bin einen Neuling mit Dapper und ich kopierte dieses SQL-Script (aus einem Test, den ich mit Entity Framework tat) und versuchte, eine Liste der Thesen Zeilen zurückgeben, aber die für die gesamte Klasse der Rückkehr und nicht nur diejenigen, die ich will!Dapper nicht Zurückgeben ausgewählt/gewünschte Zeilen

using (IDbConnection connection = new SqlConnection(@"Data Source=DESKTOP-CD2UQI5\SQLEXPRESS;Initial Catalog=ServerContext;Integrated Security=True")) 
     { 
      var res = connection.Query<Table>("select Images,AddressFrom, from Table where Table.id = 1").ToList(); 
      response = Request.CreateResponse(HttpStatusCode.OK, res); 
     } 

Bitte helfen Sie.

+0

Was meinen Sie mit _entire Class_? –

+0

die Abfrage angezeigt ist nicht gültig ... so bin ich 100% sicher, dass ist nicht indikativ Code, der das Problem tatsächlich zeigt, weil das könnte nur eine 'SqlException' werfen (vom Datenbankserver, nichts mit Dapper zu tun) –

Antwort

1

Dapper macht keine Verarbeitung Ihrer SQL (gut, es tut in einigen sehr sehr begrenzten Szenarien). Also: was auch immer zurückgegeben wird, ist wegen der Ihrer Anfrage - es ändert nicht die Abfrage die where Klausel zu entfernen, und es keine Daten zu erfinden.

Wenn Sie meinen, es mehr Spalten zurückgibt, als Sie erwarten, dann wieder: Ihre Anfrage überprüfen. Der in der Frage gezeigte ist nicht gültig (hinteres Komma in der select), also kann ich basierend auf der Frage nicht wirklich kommentieren. Suchen Sie nach einem Schurken *.

Also: Nehmen Sie Abfrage, und versuchen Sie es SSMS oder eine andere SQL-Tool ausgeführt wird; Sehen Sie, welche Zeilen und Spalten zurückkommen.

Wenn Table.id ein eindeutiges/primary/identity/etc ist, dann scheint es seltsam, mehr als eins zu bekommen, aber: ich kann nicht sagen, was hier vor sich geht, außer: dapper führt einfach Ihre Abfrage aus.

Minor Punkte:

  • AsList() würde ToList()
  • vorzuziehen sein, wenn Sie genau man erwarten, oder höchstens ein Ergebnis gibt es Methoden, mehr zu tun, dass effizient - QuerySingle etc
  • , wenn die id ist nicht festgelegt, Sie möchten wahrscheinlich einen Parameter verwenden, zum Beispiel:

    int id = ... 
    var res = connection.Query<Table>(
        "select Images,AddressFrom, from Table where Table.id = @id", new { id } 
    ).AsList(); 
    
+0

Ich stelle fest, was das Problem ist, ich war immer noch mit der EntityFramework - Klasse zu 'Query

'. Unabhängig von der SQL-Skript, war nur ein Teil Code, nur um zu sehen, was könnte falsch sein, seit ich das sagte, machte ich die gleiche Abfrage auf SQL-Server! Vielen Dank! –

Verwandte Themen