DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.17k stars 1.32k forks source link

关联表过滤器问题 #1249

Closed jxnu1985 closed 2 weeks ago

jxnu1985 commented 2 weeks ago

C表和T表均加上过滤器,过滤is_deleted为未删除数据。 在C表和T表进行Left Join时,生成的SQL语句如下 5f360a83c4fd3d56956326e51b820d5 。在T表数据为空,C表数据不为空的情况下,会出现数据查询不出来的问题

DotNetNext commented 2 weeks ago

提供完整的代码和SQL ,你这样太片面的了 过滤器支持 在ON后和where后面 ,在ON后面主表存在数据不会受T表影响

jxnu1985 commented 2 weeks ago

版本5.1.2.1 image image ConfigureServices里面添加的过滤器 image 生成的SQL image 其中的AND NOT ( [t].[is_deleted]=1 ) 需要改为 AND ( [t].[is_deleted] IS NULL )才能查询出数据

DotNetNext commented 2 weeks ago

你是不是sqlsugar版本比较老,老版本要指定一下重载设置为ON

db.QueryFilter.AddTableFilter(new xx, QueryFilterProvider.FilterJoinPosition.On);