问题来源:之前使用Visual Studio2013 开发的B/S项目用Visual Studio2015运行报错
问题语句:
ll = db.model.Where(p => db.wx_shop_product.Where(o => (o.catalogId == request.catalogId)).Select(u => u.sku).Contains(p.CouponNo)).Select(y => y.Cid).ToList();
代码修改为:
var aa = db.wx_shop_product.Where(o => (o.catalogId == request.catalogId)).Select(u => u.sku);
ll = db.model.Where(p => aa.Contains(p.CouponNo)).Select(y => y.Cid).ToList();
在Visual Studio2015不报错,但是这种修改的地方很多不可预计,而且发现使用较复杂的LINQ语句时候也会报错。
尝试解决这个问题:
解决办法1:升级EntityFramework的版本,将4.4 换成6.0。
结果:报相同错误
解决办法2:比对前后dll文件,
结果:引用的dll文件一致,一样的代码在2015生成的dll文件报错
解决办法3:重新安装vs2013
结果:成功运行代码
找到一部分原因
在vs2015 里面写let会多一条全表联查语句 ,比如
/let khoo = dbContext.dt_orders.Where(o=>o.ID==1).FirstOrDefault()
数据库会多出一条
select * from dt_orders
最终mei'没解决 放弃 ,使用vs2013
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2013anzhuangwenti/2020/0725/5317.html