为什么EF无法翻译Int32.Pars(...?

时间:2012-09-04 14:54:38

标签: asp.net entity-framework

为什么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();

2 个答案:

答案 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());在客户端上执行。然后,您将获得一个整数值,并且只将该整数值发送到数据库。