为什么EF无法翻译Int32.Parse
条件部分中的where
?
例如下面的代码有错误:
var query = (from list in dbContext.Packages
where list.Id == Int32.Parse(Request["Id"].ToString())
select list).FirstOrDefault();
我解决了这个问题:
Int32 ID = Int32.Parse(Request["Id"].ToString());
var query = (from list in dbContext.Packages
where list.Id == ID
select list).FirstOrDefault();
答案 0 :(得分:2)
因为查询只是一个被转换为SQL的表达式。
EF不知道如何将Int32.Parse
翻译成等效的SQL语句,因此失败了。
答案 1 :(得分:1)
你解决问题的方法是正确的。
where list.Id == Int32.Parse(Request["Id"].ToString())
,如果可行,则表示将Request
发送到数据库,将数据库解压缩["Id"]
,然后调用ToString()
和Int32.Parse()
Int32 ID = Int32.Parse(Request["Id"].ToString());
在客户端上执行。然后,您将获得一个整数值,并且只将该整数值发送到数据库。