LINQ to Entities 不识别方法 xxx,此该方法无法转换为存储表达式

直接上问题,完成web中的一个简单的查找功能:


//定义一个查找模型:

public class SearchModel{

//注意:数据类型为int?    原因:查找模型的这一字段可为空,所以设为int?

int? statue;


//还有很多其他属性,忽略

}


//数据库模型

public class Book{

//注意:数据类型为int而不是    原因:数据库模型的这一字段不为空,所以设为int

int status;

//还有很多其他属性,忽略

}


//在此忽略那些多层结构,直接在控制层完成

public class Controller{

public ActionResult search(SearchModel searchModel){

//下句语句会抛出异常

Repository.Entities<Entity>.Where(e => e.status == searchModel.status.GetValueOrDefault());

return View();

}

}


异常原因:

由于查找模型和数据库模型的类型不一致,所以在Linq中使用了int?.GetValueOrDefault()方法对数据类型进行了转换,所以抛出一下异常:

LINQ to Entities 不识别方法“Int32 GetValueOrDefault()。

同理,其他类型转换也会抛出该异常。


解决方法:

最简单的方法:类型转换不要再Linq中进行就好了,例如:

var status = searchModel.status.GetValueOrDefault();

Repository.Entities<Entity>.Where(e => e.status == status);

搞掂!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值