2017-05-29 6 views
0

So auszuführen, ich versuche, eine gespeicherte Prozedur aus einer Zeichenfolge auszuführen eine breite Palette von Daten zu bekommen, aber ich erhalte einenWie eine gespeicherte Prozedur aus Zeichenfolge

Der Datenleser mehr als ein Feld hat . Mehrere Felder sind nicht gültig für EDM primitiven oder Aufzählungstyp

Wie wohl ich meine gespeicherte Prozedur ausführen

public class CarBLL 
{ 

    public static string GetCar(string carnumberxx, string authTicketxx) 
    { 
     using (var context = new SindalDBEntities()) 
     { 
      var doerTicket = "0x0100000067294c938207c9e5e0cb6b98ddc4edd9464bc14e68b59cbc73c9dc559c5d43ad9b3705d1720a52542e0220b7df11b2e4bd913d873b1aa18c"; 
      var stamdata = "G0057"; 
      String sql = 
      "SET NOCOUNT ON; " + 
      "EXEC [file].[usp_getCar] " + 
      "@p_CarNumber= '" + stamdata + "', " + 
      "@p_DoerTicket= '" + doerTicket + "' "; 
      List<SqlParameter> sqlParams = new List<SqlParameter>(); 
      sqlParams.Add(new SqlParameter("CarNumber", System.Data.SqlDbType.VarChar, 100, stamdata)); 
      sqlParams.Add(new SqlParameter("DoerTicket", System.Data.SqlDbType.VarChar, 100, doerTicket)); 
      return context.Database.SqlQuery<string>(sql).FirstOrDefault<string>(); 
     } 
    } 
} 
} 

Wenn ich versuche, als

einen meiner Parameter aus der SP auszuschließen
public static usp_getCar_Result GetCar(string carnumber, string authTicket) 
    { 
using (var context = new SindalDBEntities()) 
     { 
      int? id = null; 
     // ObjectParameter Id = new ObjectParameter("p_ID", typeof(global::System.Int32)); 
     // ObjectResult result = new ObjectResult("usp_getCar_Result", typeof(string)); 
     return context.usp_getCar(id, carnumber, authTicket).FirstOrDefault(); 
      } 
     }  
    } 
} 

I erhält eine

Zusätzliche Informationen: Die Daten, Leser ist nicht kompatibel mit dem angegebenen 'SindalDbModel.usp_getCar_Result'. Ein Mitglied des Typs 'ID1' hat keine entsprechende Spalte im Datenleser mit demselben Namen.

+0

Ihre Tags sind alle falsch. –

+0

Nun ist ein Web-API in der Citymitgliedschaft und C#? –

+0

Ehrlich, wenn Sie nur Entity-Framework gespeicherte Prozedur suchen Sie würde die Antwort bekommen Sie wollen –

Antwort

1

Es ist besser, Ihre usp_getCar gespeicherte Prozedur in Ihren DbContext zu importieren. Siehe hierzu tutorial.

In diesem Fall haben Sie eine stark typisierte Methode in Ihrem SindalDBEntities. So können Sie es einfach ausführen:

return context.GetCar(stamdata, doerTicket).FirstOrDefault(); 
+0

erstellt hatte Ich hatte das versucht, aber ich konnte es nicht mit Null 1 der Parameter (p_ID), die ich nicht für irgendetwas in dieser Funktion verwenden, also warum ich versuchte, String zu verwenden, damit ich es ausschließen konnte –

Verwandte Themen