- 修复 preview0808 表达式解析 null 异常

This commit is contained in:
28810 2020-08-10 00:41:11 +08:00
parent e49f8b56fc
commit 4bf81111f0
2 changed files with 13 additions and 2 deletions

View File

@ -4,6 +4,17 @@ Imports Xunit
Namespace FreeSql.Tests.VB Namespace FreeSql.Tests.VB
Public Class UnitTest1 Public Class UnitTest1
<Fact>
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
<Fact> <Fact>
Sub TestSub() Sub TestSub()

View File

@ -499,9 +499,9 @@ namespace FreeSql.Internal
case "=": case "=":
case "<>": case "<>":
var exptb = _common.GetTableByEntity(leftExp.Type); 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); 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; break;
} }