当我添加此行时:
var card = bd.entradas_saidas
.Where(e => e.cardID == es.cardID)
.OrderBy(e => e.cardID)
.Last();
我得到这个错误:
引发异常:"系统。EntityFramework中的NotSupportedException。SqlServer.dll
如何解决此问题?
[HttpPost]
public ActionResult AddReport(entradas_saidas es)
{
using (EMSistec bd = new EMSistec())
{
try
{
// ViewData["CurrentTime"] = DateTime.Now.ToString();
var card = bd.entradas_saidas
.Where(e => e.cardID == es.cardID)
.OrderBy(e => e.cardID).Last();
bd.entradas_saidas.Add(es);
bd.SaveChanges();
return Json(new { msg = "SUCCESS" }, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return Json(new { msg = "ERROR" }, JsonRequestBehavior.AllowGet);
}
}
}
调试时,此值始终为null。
该异常表示查询中的某些内容无法转换为SQL。请记住,EF试图将您的Linq转换为SQL(或者至少转换为枚举器之前的任何代码(,并在数据库引擎中运行它。
如果我没有记错的话,SQL中不支持Last
,这可以解释这个问题。
请尝试将查询更改为以下内容,看看它是否有效。。。
var card = bd.entradas_saidas
.Where(e => e.cardID == es.cardID)
.OrderByDescending(e => e.cardID)
.First();
我所做的只是颠倒排序顺序,拿走第一个项目。First
是绝对支持的。
如果可行,请告诉我。