mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	- 修复 preview0808 表达式解析 null 异常
This commit is contained in:
		@@ -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()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user