From 4bf81111f064e5b89eb6d963285e2252cc2980b8 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 10 Aug 2020 00:41:11 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20preview0808=20?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E8=A7=A3=E6=9E=90=20null=20?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.Tests.VB/UnitTest1.vb | 11 +++++++++++ FreeSql/Internal/CommonExpression.cs | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/FreeSql.Tests.VB/UnitTest1.vb b/FreeSql.Tests.VB/UnitTest1.vb index c8966d58..d9e12fa3 100644 --- a/FreeSql.Tests.VB/UnitTest1.vb +++ b/FreeSql.Tests.VB/UnitTest1.vb @@ -4,6 +4,17 @@ Imports Xunit Namespace FreeSql.Tests.VB Public Class UnitTest1 + + + Sub IsNothing() + Dim sql = g.sqlserver.Select(Of Testvb).Where(Function(a) a.Id = 100 AndAlso a.Title Is Nothing).ToSql() + Assert.Equal("SELECT a.[Id], a.[Title], a.[IsDeleted], a.[IdNullable] +FROM [Testvb] a +WHERE (a.[Id] = 100 AND a.[Title] IS NULL)", sql) + + Dim lst = g.sqlserver.Select(Of Testvb).Where(Function(a) a.Id = 100 AndAlso a.Title Is Nothing).ToList() + End Sub + Sub TestSub() diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 01004c01..fe9e51ab 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -499,9 +499,9 @@ namespace FreeSql.Internal case "=": case "<>": var exptb = _common.GetTableByEntity(leftExp.Type); - if (exptb != null) leftExp = Expression.MakeMemberAccess(leftExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value).CsName]); + if (exptb?.Properties.Any() == true) leftExp = Expression.MakeMemberAccess(leftExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value)?.CsName]); exptb = _common.GetTableByEntity(leftExp.Type); - if (exptb?.Primarys.Any() == true) rightExp = Expression.MakeMemberAccess(rightExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value).CsName]); + if (exptb?.Properties.Any() == true) rightExp = Expression.MakeMemberAccess(rightExp, exptb.Properties[(exptb.Primarys.FirstOrDefault() ?? exptb.Columns.FirstOrDefault().Value).CsName]); break; }