C# 如何从字符串执行存储过程

C# 如何从字符串执行存储过程,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,所以,我试图从字符串执行一个存储过程,以获得广泛的数据,但我得到一个 数据读取器有多个字段。多个字段对于EDM基元或枚举类型无效 我可能如何执行存储过程 public class CarBLL { public static string GetCar(string carnumberxx, string authTicketxx) { using (var context = new SindalDBEntities()) {

所以,我试图从字符串执行一个存储过程,以获得广泛的数据,但我得到一个

数据读取器有多个字段。多个字段对于EDM基元或枚举类型无效

我可能如何执行存储过程

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>();
      } 
    }
}
}
我得到一份工作

其他信息:数据读取器与指定的“SindalDbModel.usp\u getCar\u结果”不兼容。“ID1”类型的成员在数据读取器中没有同名的对应列


最好将
usp\u getCar
存储过程导入DbContext。看这个

在这种情况下,您的
SindalDBEntities
中将有一个强类型方法。因此,您可以直接执行它:

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

你的标签都错了。是不是一个用Entityy和C#制作的web api?老实说,如果你只搜索实体框架存储过程,你会得到你想要的答案。相信我,我在过去的两天里一直在搜索一个解决方案,但我发现没有一个是有效的,所以我创建了它。我尝试过,但无法让它工作在这个函数中,我不使用空1的参数(p_ID),这就是为什么我尝试使用string来排除它
return context.GetCar(stamdata, doerTicket).FirstOrDefault();