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; }