C# SqlFunctions与DbFunctions

C# SqlFunctions与DbFunctions,c#,.net,linq,entity-framework,C#,.net,Linq,Entity Framework,声明它只应在LINQ to实体中使用。也。但当我尝试SqlFunctions时,它会说,例如,DateDiff无法翻译 为什么??它们之间的区别(除了方法签名)是什么?它们是否与特定版本相关联 Edit1 如果为SqlFunction替换DbFunctions,则生成的查询不会转换并引发异常 case "<>": return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTip

声明它只应在LINQ to实体中使用。也。但当我尝试SqlFunctions时,它会说,例如,
DateDiff
无法翻译

为什么??它们之间的区别(除了方法签名)是什么?它们是否与特定版本相关联

Edit1
如果为
SqlFunction
替换
DbFunctions
,则生成的查询不会转换并引发异常

case "<>":
    return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTipo.Data && DbFunctions.DiffDays(a.valorDateTime, data) == 0;
case ">":
    return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTipo.Data && DbFunctions.DiffDays(a.valorDateTime, data) > 0;
case "<":
    return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTipo.Data && DbFunctions.DiffDays(a.valorDateTime, data) < 0;
case ">=":
    return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTipo.Data && DbFunctions.DiffDays(a.valorDateTime, data) >= 0;
case "<=":
    return a => a.id_indice == indice.id && indice.tipoDado == (int)enumTipo.Data && DbFunctions.DiffDays(a.valorDateTime, data) <= 0;
case”“:
返回a=>a.id_indice==indice.id&&indice.tipoDado==(int)enumTipo.Data&&DbFunctions.DiffDays(a.valorDateTime,Data)==0;
案例“>”:
返回a=>a.id_indice==indice.id&&indice.tipoDado==(int)enumTipo.Data&&DbFunctions.DiffDays(a.valorDateTime,Data)>0;
案例“=”:
返回a=>a.id_indice==indice.id&&indice.tipoDado==(int)enumTipo.Data&&DbFunctions.DiffDays(a.valorDateTime,Data)>=0;

案例“猜测一下:
SqlFunctions
用于LINQ to SQL,而
DbFunctions
用于实体框架。我相信您的问题在这里得到了回答。请记住,EntityFunctions现在是从EF6开始的DbFunctions。DateDiff需要3个参数,我更新了答案。你到底在问什么?如果是关于异常的,您应该显示代码和异常。