LINQ to Entities 不识别方法system.string的处理

在进行日期比较的时候代码是这样写的:

 //今日充值总金额

            ViewBag.TodaySumAmount = sumAmount(m => true, p => p.Status == "ok" && p.CreateTime.Value.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"));

结果出现:LINQ to Entities 不识别方法system.string错误


在网上查询说是在linq中不能使用C#的方法,因为linq是要解析为sql语句,C#的方法不识别,所以需要特别的方法 

在网上查询需要引用System.Data.Entity

using System.Data.Objects.SqlClient;  //在 System.Data.Entity.dll 中

 


然后在vs2013引用后这样写:

 ViewBag.TodaySumAmount = sumAmount(m => true, p => p.Status == "ok" && SqlFunctions.DateDiff("dd", p.CreateTime, DateTime.Now) == 0);


然而却报这样得错:

LINQ to Entities 不识别方法“System.Nullable`1[System.Int32] DateDiff(System.String, System.Nullable`1[System.DateTime], System.String)”,因此该方法无法转换为存储表达式。


再用百度搜素却找不到合适的答案了。大多说的都不沾边,会是哪里的问题呢。

最后怀疑是不是 System.Data.Entity版本的问题。因为我在vs中引用程序集的时候 System.Data.Entity.dll只有一个版本,4.0

而我用的是vs2013,是4.5框架。entityframework也是6.0版

在msdn中搜素 System.Data.Entity,只有一个.netframework 4.0框架。并没有4.5框架。是不是意味着只支持4.0框架呢。

百度搜素,说只要项目引用了EntityFramework及EntityFramework.Sqlserver就可以在类中引用using System.Data.Entity.SqlServer;

这样也能调用SqlFunctions.DateDiff。

我项目中有这两个程序集引用。在类中添加using System.Data.Entity.SqlServer,编译运行,没有问题了。看来还真是这里的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值