有没有办法为linq to sql创建函数,这些函数在linq中用于实体时表现不同? 我不想使用AsQueriable。因为我想在sql服务器上做尽可能多的计算。
示例:
var UserIDs = Users.Select(x=> ConvertToString(x.UserID));
对于linq to sql,代码必须是:
public string ConvertToString(int id)
{
return SqlFunctions.StringConvert((double?)id);
}
对于linq to entities,代码必须是:
public string ConvertToString(int id)
{
return id.ToString();
}
答案 0 :(得分:0)
您可以在Entity Framework 4及更高版本中使用SqlFunction。在您的示例中,您不必在应用程序层中进行转换。
答案 1 :(得分:0)
在Linq-to-Entites中,无论如何都不允许在查询中使用ConvertToString
调用,所以这是一个勇敢而无果的努力。原因是L2E查询中的每个语句都必须是查询提供程序必须可以转换为SQL的表达式。并且(当然)没有任何方法的内置翻译。 L2E在这里非常有限。甚至不可能使用大多数原生.Net方法,如
Users.Select(x=> Convert.ToString(x.UserID)); // NotSupportedException
Linq-to-Sql在这方面稍微宽松一点。它会很好地运行声明。但这对你没有帮助,因为你正在寻找一个共同点。瓶颈是L2E,这是一个狭窄的瓶颈。