Linq的Bug收集

1、Linq的应用过程中,若是一个对DbContext的对象的引用,则会自动产生一个SQL查询,而且此类对象不能和非SQL类型的对象混用,也就是说下列举例不能被正常执行:

DbSet<CouponSupply> couponSupplies = _context.CouponSupplies;
List<SupplyTypeResult> supplyTypes = new List<SupplyTypeResult>();
supplyTypes.Add(new SupplyTypeResult
{
    SupplyTypeId = 2,
    SupplyTypeName = "其他投放方式"
});

IQueryable<CouponSupplyQueryResult> couponSupplyQueryResults = couponSupplies.Join(supplyTypes, p => p.SupplyTypeId, q => q.SupplyTypeId, (p, q) => new CouponSupplyQueryResult
{
    CouponSupplyId = p.CouponSupplyId,
    CouponTypeId = p.CouponTypeId,
    CouponTypeName = q.CouponTypeName,
    CouponFaceValue = p.CouponFaceValue,
    CouponSelfPayMoney = p.CouponSelfPayMoney,
});

上述代码中couponSupplies会产生一个SQL查询,而supplyTypes则是非SQL查询,属于静态值类型数据,两者混用时,会报下列错误:

Unable to create a constatnt value of type "VME.Models.SupplyTypeResult". Only primitive types or enumeration types are supported in this context.

解决该问题可以采用下列方式:

1、先通过couponSupplies.ToList()方法获取List对象,确保需要 Join 的两个对象都是非SQL对象。

2、在通过 Linq 的 Join 方法进行级联获取想要的数据。

具体如下:

DbSet<CouponSupply> couponSupplies = _context.CouponSupplies;
List<SupplyTypeResult> supplyTypes = new List<SupplyTypeResult>();
supplyTypes.Add(new SupplyTypeResult
{
    SupplyTypeId = 2,
    SupplyTypeName = "其他投放方式"
});

List<CouponSupply> couponSupplys = couponSupplies.ToList();
IQueryable<CouponSupplyQueryResult> couponSupplyQueryResults = couponSupplys.Join(supplyTypes, p => p.SupplyTypeId, q => q.SupplyTypeId, (p, q) => new CouponSupplyQueryResult
{
    CouponSupplyId = p.CouponSupplyId,
    CouponTypeId = p.CouponTypeId,
    CouponTypeName = q.CouponTypeName,
    CouponFaceValue = p.CouponFaceValue,
    CouponSelfPayMoney = p.CouponSelfPayMoney,
});

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 14:10:53

Linq的Bug收集的相关文章

border-radius bug 收集

border-radius我相信对于老一辈的前端们有着特殊的感情,在经历了没有圆角的蛮荒时代,到如今 CSS3 遍地开花,我们还是很幸福的. 然而即使到了三星大脸流行时代,border-radius在移动端的表现依旧差强人意,主要有两点问题: 一.Android 2.3 自带浏览器不支持 % 通常我们实现一个正圆只需要border-radius: 50%即可,大致代码如下: .foo { width: 100px; height: 100px; border-radius: 50%; borde

ubuntu下Qt之android环境配置各种bug收集

准备材料有: 1. qt for android 5.×版本,下载地址如下,可以选择一个合适自己机器型号的版本进行下载. 地址:http://www.qt.io/download-open-source/#section-2 2. jdk下载以及环境配置 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 环境变量设置: 0> 执行如下命令,解压jdk包到指定的路径去. $

经典好文:android和iOS平台的崩溃捕获和收集

通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助.本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开发应用或者没有特殊限制的话,就不用往下看了,直接把友盟sdk(一个统计分析sdk)加入到工程中就万事大吉了,其中的错误日志功能完全能够满足需求,而且不需要额外准备接收服务器. 但是如果你对其原理更感兴趣,或者像我一样必须要兼容公司现有的bug收集系统,那么下面的东西就值得一看了. 要实现崩溃捕获和收

Android面试题收集

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题,目前已收集100题. 1.Android系统的架构 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等.所有的应用程序都是使用JAVA语言编写的. Android系统架构之应用程

android和iOS平台的崩溃捕获和收集

转自:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019349.html 通过崩溃捕获和收集,可以收集到已发布应用(游戏)的异常,以便开发人员发现和修改bug,对于提高软件质量有着极大的帮助.本文介绍了iOS和android平台下崩溃捕获和收集的原理及步骤,不过如果是个人开发应用或者没有特殊限制的话,就不用往下看了,直接把友盟sdk(一个统计分析sdk)加入到工程中就万事大吉了,其中的错误日志功能完全能够满足需求,而且不需要额外准备接收

Laya for H5 之Bug追踪

Laya For H5之Bug追踪 H5游戏一旦上线后,如何跟踪用户的崩溃日志呢?现在有很多第三方的工具,比如fundebug,其sdk接入简单,只需寥寥几行代码就可以追踪h5游戏的崩溃日志,bug日志以邮件的形势发送给注册的邮箱,但是其试用周期短,不适合个人开发者. 其实h5前端从获取到崩溃Error到给指定邮箱发送日志,难点在于自动的 给指定邮箱发邮件,因为这涉及到账户安全相关的事宜,而更多的时候纯JS也只是弹出个发送邮件的mail对话框,发送那一下,还是需要你手动的点一下的. 集成步骤 额

拥抱高效、拥抱 Bugtags 之来自用户的声音(四)

小编按:这是一篇 Bugtags 用户来稿,经过一段时间的密集使用,他已然觉得 Bugtags 是 App 开发者的好帮手,感谢解铃 App - 楚琪同学对 Bugtags 的信赖和支持.小编在这里诚邀各位热心用户向我们投稿,说出你使用 Bugtags 的故事. 无论开发 Web 网站还是开发 App,如果用户在使用程序或网站的过程中程序出现了错误,我们都希望第一时间知道,并且希望错误信息越详细越好,这样方便我们技术人员定位问题以尽快解决.针对 Web 网站,我们会在服务端集成日志系统,服务端监

Web前端开发十日谈

一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”的洞察力,多年来也一直未有成体系的“前端技术”布道佳作,以至于当下多数人对前端技术

iOS 应用崩溃日志分析

通过本教程,你将学习到一些常见的崩溃日志案例,以及如何从开发设备和iTunes Connect上获取崩溃日志文件.你还将学习到符号化( symbolication),从日志追踪到代码 .你还将学习调试一个在待定情况下会闪退的应用. 让我们开始动手吧! 什么是崩溃日志,从哪里能得它? iOS设备上的应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上. 崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的.通常,上面有每个正在执行线程的完整堆栈跟踪信息,所以你能从中了解到闪退发生时