我对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不为空。
答案 0 :(得分:0)
似乎Malfunctions
中的某个项目,此查询找不到元素
Malfunctions.Single(c => c.Id == malfunctionDTO.CustomerId);
试
.SingleOrDefault()
答案 1 :(得分:0)
Single(condition),是一个linq扩展方法,它返回唯一与传入条件匹配的元素。 如果没有符合条件的元素或者执行匹配的多个元素,则会抛出错误。 在您的情况下,数据库中没有与此条件匹配的元素。 顺便说一下,你可以使用singleOrDefault而不是抛出异常它返回默认值null。或者可能在单个方法之前,Malfunctions什么都不包含,所以它不会迭代任何东西。