【发布时间】:2014-06-06 07:01:30
【问题描述】:
我正在使用实体框架,并且我有一行代码正在获取一个 var 并将其转换回数据库的 iint。
var record = context.enrollments.SingleOrDefault
(row => row.userId == int.Parse(UserID) && row.classId == int.Parse(ClassID));
每当我尝试运行它时,我都会收到 rhis 错误。 “LINQ to Entities 无法识别方法 'Int32 Parse(System.String)' 方法,并且该方法无法转换为存储表达式。”
我也试过了
var record = context.enrollments.FirstOrDefault
(row => row.userId == Convert.ToInt32(UserID)
&& row.classId == Convert.ToInt32(ClassID));
我收到的只是这条错误消息,“LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且该方法无法转换为存储表达式
最后我也尝试了这个,我知道这很不寻常,但它在过去类似的情况下也有效。
var record = context.enrollments.SingleOrDefault
(row => row.userId == CommonDLL.Sanitize<int>.ConvertType(UserID)
&& row.classId == CommonDLL.Sanitize<int>.ConvertType(ClassID));
我在其中收到此错误。如您所见,我尝试了几种不同的方法,但没有任何效果,所以任何帮助都会很棒。
【问题讨论】:
-
如果我没记错的话,您应该可以将
int.Parse替换为Convert.ToInt32以使其工作。 -
我应该在 cmets 中提到这一点,但我已经尝试过了,我收到此错误消息,“{”LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且这个方法不能翻译成商店表达式。"}"
-
您是否尝试过使用像
System.Convert.ToInt32这样的完整命名空间?如果这是 linq 不支持的具体内容,我不会。只是在这里猜测。 -
其实已经有一个关于这个的问题,有一个答案:stackoverflow.com/questions/7399602/…这里stackoverflow.com/questions/13887296/…