2017-05-29 60 views
0

所以執行存儲過程,我想從一個字符串執行存儲過程以獲得大量的數據,但我得到一個如何從字符串

數據讀取器有一個以上的場。多個字段不適用於電火花加工的原始或枚舉類型

我怎麼可能執行我的存儲過程

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>(); 
     } 
    } 
} 
} 

如果我嘗試排除我的參數之一,從SP作爲

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(); 
      } 
     }  
    } 
} 

我得到一個

附加信息:閱讀器與指定的'SindalDbModel.usp_getCar_Result'不兼容。該類型的成員'ID1'在數據閱讀器中沒有相應的列具有相同的名稱。

+0

你的標籤都是錯的。 –

+0

好,是一個網頁API在實體和C#maded? –

+0

老實說,如果你inly搜索實體框架存儲過程,你會得到你想要的答案 –

回答

1

最好將您的usp_getCar存儲過程導入到DbContext中。看到這個tutorial

在這種情況下,您將在您的SindalDBEntities中使用強類型方法。所以你可以直接執行它:

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

我已經嘗試過,但我不能得到它與參數(p_ID),我不用這個函數中的任何東西的空1,所以這就是爲什麼我嘗試使用字符串,所以我可以排除它 –