序列包含多个匹配元素"调用存储过程时

本文关键字:quot 调用 存储过程 元素 包含多 | 更新日期: 2023-09-27 18:15:43

我想用MyList:

在我的页面上显示一个列表
  public List<ResponseType> MyList(int param1, DateTime Date)
        {
            return db.spMyStoredProcedure(param1, param2).ExecuteTypedList<ResponseType>();
        }

调用这个存储过程:

    public StoredProcedure spMyStoredProcedure(int param1,DateTime Date){
        StoredProcedure sp=new StoredProcedure("spMyStoredProcedure",this.Provider);
        sp.Command.AddParameter("param1",LeadStatusID,DbType.Int32);
        sp.Command.AddParameter("Date",Date,DbType.DateTime);
        return sp;
    }

使用这个类:

public class ResponseType
    {
        public string 1 { get; set; }
        public bool2 { get; set; }
        public DateTime 3 { get; set; }
...etc.
        }

ResponseType继承另一个类,而这个类又继承另一个类。

错误消息"Sequence包含多个匹配元素"是否意味着ResponseType(或它继承的类)有多个声明?我似乎只声明了其中一个,这也是Visual Studio在我点击"转到声明"时引导我的地方。

我可以在SQL Server中使用我传递的相同参数执行存储过程,所以我不确定为什么列表无法显示。

序列包含多个匹配元素"调用存储过程时

我很确定您在其他地方使用SingleOrDefaultSingle方法。只有当集合包含0或1个元素时,它们才会成功。为什么你不尝试FirstOrDefault,它总是采取第一个元素(或defualt(type))?

查看SingleOrDefault:

可能出现的异常

    ArgumentNullException ->来源为空
  1. InvalidOperationException -> 输入序列包含多个元素

另一种可能是在HttpPost方法中调用First()。就像

[HttpPost]
public JsonResult Test(int Id)
{
        var query = myDb.Responses
              .Where(y => y.Id==Id).First();     
    return Json(new { Test= query.Name}, JsonRequestBehavior.AllowGet);
}

如果你的Id不存在,这个错误就会发生

对不起大家,我的问题是我在ResponseType中定义了一个变量,然后又在它继承的类中定义了一个变量。

显然,您无法知道这一点,因为我没有包含继承的类。谢谢

相关文章: