遗忘海岸

江湖程序员 -Feiph(LM战士)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

EF对应null的处理

原来的代码是

if (string.IsNullOrWhiteSpace(seal)) seal = null;

ctx.Terminal.FirstOrDefault(ent=>ent.Seal==seal)

当seal是null时成长的sql语句如下,采用=null执行结果不是需要的

复制代码
exec sp_executesql N'SELECT TOP (1) 
[Extent1].[id] AS [id], 
[Extent1].[Terminal] AS [Terminal], 
[Extent1].[Die] AS [Die], 
[Extent1].[WireGauge] AS [WireGauge], 
[Extent1].[NormCCH] AS [NormCCH], 
[Extent1].[ActualCCH] AS [ActualCCH], 
[Extent1].[NormCCW] AS [NormCCW], 
[Extent1].[ActualCCW] AS [ActualCCW], 
[Extent1].[NormICH] AS [NormICH], 
[Extent1].[ActualICH] AS [ActualICH], 
[Extent1].[NormICW] AS [NormICW], 
[Extent1].[ActualICW] AS [ActualICW], 
[Extent1].[NormPullForce] AS [NormPullForce], 
[Extent1].[UpPullForce] AS [UpPullForce], 
[Extent1].[DownPullForce] AS [DownPullForce], 
[Extent1].[ActualPullForce] AS [ActualPullForce], 
[Extent1].[WireType] AS [WireType], 
[Extent1].[Seal] AS [Seal], 
[Extent1].[Supplier] AS [Supplier], 
[Extent1].[Project] AS [Project], 
[Extent1].[StripLength] AS [StripLength], 
[Extent1].[coreup] AS [coreup], 
[Extent1].[coredown] AS [coredown], 
[Extent1].[platicup] AS [platicup], 
[Extent1].[platicdown] AS [platicdown], 
[Extent1].[sample] AS [sample], 
[Extent1].[Tester] AS [Tester], 
[Extent1].[picture] AS [picture], 
[Extent1].[testdate] AS [testdate], 
[Extent1].[date] AS [date], 
[Extent1].[yj] AS [yj], 
[Extent1].[standardY1] AS [standardY1], 
[Extent1].[standardY2] AS [standardY2], 
[Extent1].[standardY3] AS [standardY3], 
[Extent1].[standardY4] AS [standardY4], 
[Extent1].[standardY5] AS [standardY5], 
[Extent1].[standardY6] AS [standardY6], 
[Extent1].[standardY7] AS [standardY7], 
[Extent1].[standardY8] AS [standardY8], 
[Extent1].[standardY9] AS [standardY9], 
[Extent1].[standardY10] AS [standardY10], 
[Extent1].[standardN1] AS [standardN1], 
[Extent1].[standardN2] AS [standardN2], 
[Extent1].[standardN3] AS [standardN3], 
[Extent1].[standardN4] AS [standardN4], 
[Extent1].[standardN5] AS [standardN5], 
[Extent1].[standardN6] AS [standardN6], 
[Extent1].[standardN7] AS [standardN7], 
[Extent1].[standardN8] AS [standardN8], 
[Extent1].[standardN9] AS [standardN9], 
[Extent1].[standardN10] AS [standardN10], 
[Extent1].[plug] AS [plug], 
[Extent1].[socket] AS [socket], 
[Extent1].[remark1] AS [remark1], 
[Extent1].[remark] AS [remark], 
[Extent1].[CCHUp] AS [CCHUp], 
[Extent1].[CCWUp] AS [CCWUp], 
[Extent1].[ICHUp] AS [ICHUp], 
[Extent1].[ICWUp] AS [ICWUp], 
[Extent1].[CCHDown] AS [CCHDown], 
[Extent1].[CCWDown] AS [CCWDown], 
[Extent1].[ICHDown] AS [ICHDown], 
[Extent1].[ICWDown] AS [ICWDown], 
[Extent1].[CCH] AS [CCH], 
[Extent1].[CCW] AS [CCW], 
[Extent1].[ICH] AS [ICH], 
[Extent1].[ICW] AS [ICW]
FROM (SELECT 
      [Terminal].[id] AS [id], 
      [Terminal].[Terminal] AS [Terminal], 
      [Terminal].[Die] AS [Die], 
      [Terminal].[WireGauge] AS [WireGauge], 
      [Terminal].[NormCCH] AS [NormCCH], 
      [Terminal].[ActualCCH] AS [ActualCCH], 
      [Terminal].[NormCCW] AS [NormCCW], 
      [Terminal].[ActualCCW] AS [ActualCCW], 
      [Terminal].[NormICH] AS [NormICH], 
      [Terminal].[ActualICH] AS [ActualICH], 
      [Terminal].[NormICW] AS [NormICW], 
      [Terminal].[ActualICW] AS [ActualICW], 
      [Terminal].[NormPullForce] AS [NormPullForce], 
      [Terminal].[UpPullForce] AS [UpPullForce], 
      [Terminal].[DownPullForce] AS [DownPullForce], 
      [Terminal].[ActualPullForce] AS [ActualPullForce], 
      [Terminal].[WireType] AS [WireType], 
      [Terminal].[Seal] AS [Seal], 
      [Terminal].[Supplier] AS [Supplier], 
      [Terminal].[Project] AS [Project], 
      [Terminal].[StripLength] AS [StripLength], 
      [Terminal].[coreup] AS [coreup], 
      [Terminal].[coredown] AS [coredown], 
      [Terminal].[platicup] AS [platicup], 
      [Terminal].[platicdown] AS [platicdown], 
      [Terminal].[sample] AS [sample], 
      [Terminal].[Tester] AS [Tester], 
      [Terminal].[picture] AS [picture], 
      [Terminal].[testdate] AS [testdate], 
      [Terminal].[date] AS [date], 
      [Terminal].[yj] AS [yj], 
      [Terminal].[standardY1] AS [standardY1], 
      [Terminal].[standardY2] AS [standardY2], 
      [Terminal].[standardY3] AS [standardY3], 
      [Terminal].[standardY4] AS [standardY4], 
      [Terminal].[standardY5] AS [standardY5], 
      [Terminal].[standardY6] AS [standardY6], 
      [Terminal].[standardY7] AS [standardY7], 
      [Terminal].[standardY8] AS [standardY8], 
      [Terminal].[standardY9] AS [standardY9], 
      [Terminal].[standardY10] AS [standardY10], 
      [Terminal].[standardN1] AS [standardN1], 
      [Terminal].[standardN2] AS [standardN2], 
      [Terminal].[standardN3] AS [standardN3], 
      [Terminal].[standardN4] AS [standardN4], 
      [Terminal].[standardN5] AS [standardN5], 
      [Terminal].[standardN6] AS [standardN6], 
      [Terminal].[standardN7] AS [standardN7], 
      [Terminal].[standardN8] AS [standardN8], 
      [Terminal].[standardN9] AS [standardN9], 
      [Terminal].[standardN10] AS [standardN10], 
      [Terminal].[plug] AS [plug], 
      [Terminal].[socket] AS [socket], 
      [Terminal].[remark1] AS [remark1], 
      [Terminal].[remark] AS [remark], 
      [Terminal].[CCHUp] AS [CCHUp], 
      [Terminal].[CCWUp] AS [CCWUp], 
      [Terminal].[ICHUp] AS [ICHUp], 
      [Terminal].[ICWUp] AS [ICWUp], 
      [Terminal].[CCHDown] AS [CCHDown], 
      [Terminal].[CCWDown] AS [CCWDown], 
      [Terminal].[ICHDown] AS [ICHDown], 
      [Terminal].[ICWDown] AS [ICWDown], 
      [Terminal].[CCH] AS [CCH], 
      [Terminal].[CCW] AS [CCW], 
      [Terminal].[ICH] AS [ICH], 
      [Terminal].[ICW] AS [ICW]
      FROM [dbo].[Terminal] AS [Terminal]) AS [Extent1]
WHERE ([Extent1].[Terminal] = @p__linq__0) AND ([Extent1].[WireGauge] = @p__linq__1) AND ([Extent1].[Die] LIKE N''Q%'') AND ([Extent1].[WireType] = @p__linq__2) AND ([Extent1].[Seal] = @p__linq__3)',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000),@p__linq__2 nvarchar(4000),@p__linq__3 nvarchar(4000)',@p__linq__0=N'968221-1',@p__linq__1=N'0.50',@p__linq__2=N'GHB2',@p__linq__3=N'NULL'
View Code
复制代码

 

换成下面代码后生成的语句变成了Is null  正确匹配了结果

复制代码
exec sp_executesql N'SELECT TOP (1) 
[Extent1].[id] AS [id], 
[Extent1].[Terminal] AS [Terminal], 
[Extent1].[Die] AS [Die], 
[Extent1].[WireGauge] AS [WireGauge], 
[Extent1].[NormCCH] AS [NormCCH], 
[Extent1].[ActualCCH] AS [ActualCCH], 
[Extent1].[NormCCW] AS [NormCCW], 
[Extent1].[ActualCCW] AS [ActualCCW], 
[Extent1].[NormICH] AS [NormICH], 
[Extent1].[ActualICH] AS [ActualICH], 
[Extent1].[NormICW] AS [NormICW], 
[Extent1].[ActualICW] AS [ActualICW], 
[Extent1].[NormPullForce] AS [NormPullForce], 
[Extent1].[UpPullForce] AS [UpPullForce], 
[Extent1].[DownPullForce] AS [DownPullForce], 
[Extent1].[ActualPullForce] AS [ActualPullForce], 
[Extent1].[WireType] AS [WireType], 
[Extent1].[Seal] AS [Seal], 
[Extent1].[Supplier] AS [Supplier], 
[Extent1].[Project] AS [Project], 
[Extent1].[StripLength] AS [StripLength], 
[Extent1].[coreup] AS [coreup], 
[Extent1].[coredown] AS [coredown], 
[Extent1].[platicup] AS [platicup], 
[Extent1].[platicdown] AS [platicdown], 
[Extent1].[sample] AS [sample], 
[Extent1].[Tester] AS [Tester], 
[Extent1].[picture] AS [picture], 
[Extent1].[testdate] AS [testdate], 
[Extent1].[date] AS [date], 
[Extent1].[yj] AS [yj], 
[Extent1].[standardY1] AS [standardY1], 
[Extent1].[standardY2] AS [standardY2], 
[Extent1].[standardY3] AS [standardY3], 
[Extent1].[standardY4] AS [standardY4], 
[Extent1].[standardY5] AS [standardY5], 
[Extent1].[standardY6] AS [standardY6], 
[Extent1].[standardY7] AS [standardY7], 
[Extent1].[standardY8] AS [standardY8], 
[Extent1].[standardY9] AS [standardY9], 
[Extent1].[standardY10] AS [standardY10], 
[Extent1].[standardN1] AS [standardN1], 
[Extent1].[standardN2] AS [standardN2], 
[Extent1].[standardN3] AS [standardN3], 
[Extent1].[standardN4] AS [standardN4], 
[Extent1].[standardN5] AS [standardN5], 
[Extent1].[standardN6] AS [standardN6], 
[Extent1].[standardN7] AS [standardN7], 
[Extent1].[standardN8] AS [standardN8], 
[Extent1].[standardN9] AS [standardN9], 
[Extent1].[standardN10] AS [standardN10], 
[Extent1].[plug] AS [plug], 
[Extent1].[socket] AS [socket], 
[Extent1].[remark1] AS [remark1], 
[Extent1].[remark] AS [remark], 
[Extent1].[CCHUp] AS [CCHUp], 
[Extent1].[CCWUp] AS [CCWUp], 
[Extent1].[ICHUp] AS [ICHUp], 
[Extent1].[ICWUp] AS [ICWUp], 
[Extent1].[CCHDown] AS [CCHDown], 
[Extent1].[CCWDown] AS [CCWDown], 
[Extent1].[ICHDown] AS [ICHDown], 
[Extent1].[ICWDown] AS [ICWDown], 
[Extent1].[CCH] AS [CCH], 
[Extent1].[CCW] AS [CCW], 
[Extent1].[ICH] AS [ICH], 
[Extent1].[ICW] AS [ICW]
FROM (SELECT 
      [Terminal].[id] AS [id], 
      [Terminal].[Terminal] AS [Terminal], 
      [Terminal].[Die] AS [Die], 
      [Terminal].[WireGauge] AS [WireGauge], 
      [Terminal].[NormCCH] AS [NormCCH], 
      [Terminal].[ActualCCH] AS [ActualCCH], 
      [Terminal].[NormCCW] AS [NormCCW], 
      [Terminal].[ActualCCW] AS [ActualCCW], 
      [Terminal].[NormICH] AS [NormICH], 
      [Terminal].[ActualICH] AS [ActualICH], 
      [Terminal].[NormICW] AS [NormICW], 
      [Terminal].[ActualICW] AS [ActualICW], 
      [Terminal].[NormPullForce] AS [NormPullForce], 
      [Terminal].[UpPullForce] AS [UpPullForce], 
      [Terminal].[DownPullForce] AS [DownPullForce], 
      [Terminal].[ActualPullForce] AS [ActualPullForce], 
      [Terminal].[WireType] AS [WireType], 
      [Terminal].[Seal] AS [Seal], 
      [Terminal].[Supplier] AS [Supplier], 
      [Terminal].[Project] AS [Project], 
      [Terminal].[StripLength] AS [StripLength], 
      [Terminal].[coreup] AS [coreup], 
      [Terminal].[coredown] AS [coredown], 
      [Terminal].[platicup] AS [platicup], 
      [Terminal].[platicdown] AS [platicdown], 
      [Terminal].[sample] AS [sample], 
      [Terminal].[Tester] AS [Tester], 
      [Terminal].[picture] AS [picture], 
      [Terminal].[testdate] AS [testdate], 
      [Terminal].[date] AS [date], 
      [Terminal].[yj] AS [yj], 
      [Terminal].[standardY1] AS [standardY1], 
      [Terminal].[standardY2] AS [standardY2], 
      [Terminal].[standardY3] AS [standardY3], 
      [Terminal].[standardY4] AS [standardY4], 
      [Terminal].[standardY5] AS [standardY5], 
      [Terminal].[standardY6] AS [standardY6], 
      [Terminal].[standardY7] AS [standardY7], 
      [Terminal].[standardY8] AS [standardY8], 
      [Terminal].[standardY9] AS [standardY9], 
      [Terminal].[standardY10] AS [standardY10], 
      [Terminal].[standardN1] AS [standardN1], 
      [Terminal].[standardN2] AS [standardN2], 
      [Terminal].[standardN3] AS [standardN3], 
      [Terminal].[standardN4] AS [standardN4], 
      [Terminal].[standardN5] AS [standardN5], 
      [Terminal].[standardN6] AS [standardN6], 
      [Terminal].[standardN7] AS [standardN7], 
      [Terminal].[standardN8] AS [standardN8], 
      [Terminal].[standardN9] AS [standardN9], 
      [Terminal].[standardN10] AS [standardN10], 
      [Terminal].[plug] AS [plug], 
      [Terminal].[socket] AS [socket], 
      [Terminal].[remark1] AS [remark1], 
      [Terminal].[remark] AS [remark], 
      [Terminal].[CCHUp] AS [CCHUp], 
      [Terminal].[CCWUp] AS [CCWUp], 
      [Terminal].[ICHUp] AS [ICHUp], 
      [Terminal].[ICWUp] AS [ICWUp], 
      [Terminal].[CCHDown] AS [CCHDown], 
      [Terminal].[CCWDown] AS [CCWDown], 
      [Terminal].[ICHDown] AS [ICHDown], 
      [Terminal].[ICWDown] AS [ICWDown], 
      [Terminal].[CCH] AS [CCH], 
      [Terminal].[CCW] AS [CCW], 
      [Terminal].[ICH] AS [ICH], 
      [Terminal].[ICW] AS [ICW]
      FROM [dbo].[Terminal] AS [Terminal]) AS [Extent1]
WHERE ([Extent1].[Terminal] = @p__linq__0) AND ([Extent1].[WireGauge] = @p__linq__1) AND ([Extent1].[WireType] = @p__linq__2) AND ([Extent1].[Die] LIKE N''Q%'') AND ([Extent1].[Seal] IS NULL)',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000),@p__linq__2 nvarchar(4000)',@p__linq__0=N'968221-1',@p__linq__1=N'0.50',@p__linq__2=N'GHB2'
View Code
复制代码

 

C#代码  需要调用时显式的使用  ctx.Terminal.where(net=>ent.Seal==null) ,才能生成 is null的SQL语句

复制代码
                        using (var mfgCtx = com.geelyhd.MFG.EFModel.DBCtx.GetCtx())
                        {
                            var q = mfgCtx.Terminal.Where(ent => ent.Terminal1 == ter && ent.WireGauge == card.Guage && ent.WireType == card.Wire_kinds);
                            if (terArr[i].CCHType == "30高度")
                            {

                                q =  q.Where(ent=> !ent.Die.StartsWith("Q") );

                            }
                            else //40高度带Q
                            {
                               
                                q = q.Where(ent => ent.Die.StartsWith("Q"));

                            }
                            if (seal == null)
                            {
                                q = q.Where(ent => ent.Seal == null);
                            }
                            else
                            {
                                q = q.Where(ent => ent.Seal == seal);
                            }
                            it = q.FirstOrDefault();

                        }
View Code
复制代码

 

posted on   遗忘海岸  阅读(754)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2017-06-03 平面切圆柱面的椭圆绘制
2015-06-03 JPEG Camer 图片上传
2008-06-03 打造安全的WebService服务
点击右上角即可分享
微信分享提示