我正在从LINQ2SQL
EF 过渡,并且在使用一些基本的 lambda 表达式时遇到了一些问题。
在下面的示例中,我试图检索客户端相关数据的基本列表。此语句在使用LINQ2SQL
数据上下文运行时可以正常工作。
var data = db.Clients.Select(c => c.Id + ":" + c.Firstname);
foreach (var item in data)
{
}
当我针对 EF 数据上下文执行它时,我得到:
NotSupportedException - Unable to cast the type 'System.Int32' to type 'System.Object'. LINQ to Entities only supports casting EDM primitive or enumeration types.
NB
: Id 字段是一个整数。
我已经能够通过ToArray()
在 db.Clients 之后添加一个来修复错误。
有人可以解释一下如果..
a) 我需要对解决方案中的每个预先存在的语句进行这种代码更改,以使其与 EF 一起使用;和
b) 为什么 EF 在LINQ2SQL
正常的情况下在基本串联方面会遇到这么多麻烦?
谢谢。