尝试从数据库中获取数据时出现System.InvalidOperationException

时间:2017-10-06 09:36:35

标签: asp.net-mvc entity-framework invalidoperationexception

我对MVC和EF相当新,我试图将数据从我的数据库显示到我的视图中。这是我的行动:

public ActionResult MalfunctionsList(MalfunctionDTO malfunctionDTO)
    {
        var malfunctions = _context.Malfunctions.ToList();
        var customer = _context.Malfunctions.Single(c => c.Id == malfunctionDTO.CustomerId);
        var movie = _context.Malfunctions.Where(m => malfunctionDTO.MovieIds.Contains(m.Id)).ToList();

        return View(malfunctions);
    }

当代码运行时,我得到System.InvalidOperationException:Sequence在这一行中不包含任何元素:

var customer = _context.Malfunctions.Single(c => c.Id == malfunctionDTO.CustomerId);

这是我的DTO:

public class MalfunctionDTO
{
    public int CustomerId { get; set; }

    public List<int> MovieIds { get; set; }

    public Customer Customer { get; set; }

    public Movie Movie { get; set; }

    public string ReportDescription { get; set; }

}

在我的数据库表中,customerId不为空。

2 个答案:

答案 0 :(得分:0)

似乎Malfunctions中的某个项目,此查询找不到元素

Malfunctions.Single(c => c.Id == malfunctionDTO.CustomerId);

.SingleOrDefault()

答案 1 :(得分:0)

Single(condition),是一个linq扩展方法,它返回唯一与传入条件匹配的元素。 如果没有符合条件的元素或者执行匹配的多个元素,则会抛出错误。 在您的情况下,数据库中没有与此条件匹配的元素。 顺便说一下,你可以使用singleOrDefault而不是抛出异常它返回默认值null。或者可能在单个方法之前,Malfunctions什么都不包含,所以它不会迭代任何东西。