我正在使用VS2012和DBContext(实体框架)。
以下查询引发异常
Customer cust;
using (var context = new MiniNorthwindContext()) {
cust = (from c in context.Customers
where c.CustomerName.Contains("SN")
select c).SingleOrDefault();
}
当我运行它时,它会抛出以下错误:“Sequence包含多个元素”。
如果我用
替换它Customer cust;
using (var context = new MiniNorthwindContext()) {
cust = (from c in context.Customers
where c.CustomerName == "SN Software"
select c).SingleOrDefault();
}
然后它过去了。
我可能做错了什么。
答案 0 :(得分:5)
答案 1 :(得分:1)
SingleOrDefault()
就会抛出异常。如果有任何记录,您可以使用FirstOrDefault()
代替第一条记录。
答案 2 :(得分:0)
两个查询都是正确的。问题是数据:
<强> CUSTOMERNAME 强>
ESNF CO
SN软件
MICROSOFT
APPLE
第一个查询(c.CustomerName.Contains(“SN”))结果:
返回2行,因此Exception,因为SingleOrDefault()只允许1条记录。
第二个查询( c.CustomerName ==“SN Software”)结果:
仅返回1行
运行完美!!!。
问题在于数据。