Convert.Int64 不会重新协调 LINQ 到实体

本文关键字:协调 LINQ 实体 Int64 新协调 Convert | 更新日期: 2023-09-27 18:30:34

我收到以下异常:LINQ to Entities 无法识别方法"Int64 ToInt64(System.String)"方法,并且此方法无法转换为存储表达式。

我有很长的时间。Parse(ProjectID.ToString()),我看到建议是使用 Convert.ToInt64,但我仍然得到相同的异常

string projID = ProjectFileID.ToString();
            var d = (from f in context.FileInfo
                     where f.ID == Convert.ToInt64(projID)
                     select (f));

Convert.Int64 不会重新协调 LINQ 到实体

只需在查询之外进行转换,因此您将结果直接与类型为 long 的变量进行比较:

// TODO: Error handling
long projID = Convert.ToInt64(ProjectFileID.ToString());
var d = (from f in context.FileInfo
         where f.ID == projID
         select (f));

另外,鉴于您正在ProjectFileID上调用ToString(),您是否可以将其转换为投射,因为它确实看起来像是int或类似的东西。

原因是它试图在查询本身内部进行转换,而幕后的 SQL 没有对该扩展的定义。解决方法是将查询转换为 long 外部(转换为临时变量),然后将其传递给 LINQ。