diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index ac3418885..570bb47c5 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -79,6 +79,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index 086587078..28814164c 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -31,6 +31,7 @@ namespace OrmTest } public static void Init() { + Filter(); Insert(); Enum(); Tran(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UFilter.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UFilter.cs new file mode 100644 index 000000000..af789f914 --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UFilter.cs @@ -0,0 +1,91 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public partial class NewUnitTest + { + public static void Filter() + { + var db = Db; + db.QueryFilter.Add(new SqlSugar.TableFilterItem(it=>it.id>0)); + + var s1=db.Queryable().ToSql(); + if (s1.Key.Contains(">")) + { + throw new Exception("UnitFilter"); + } + var s4 = db.Queryable((o, i) => i.OrderId == o.Id).Select("o.*").ToSql(); + if (s4.Key.Contains(">")) + { + throw new Exception("UnitFilter"); + } + + var s5 = db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.Id == i.OrderId)) + .Select("o.*").ToSql(); + if (s5.Key.Contains(">")) + { + throw new Exception("UnitFilter"); + } + + + var s2 = db.Queryable().ToSql(); + UValidate.Check(s2.Key, + @"SELECT [id],[name] FROM [UnitFilterClass1] WHERE ( [id] > @id0 )", "UnitFilter"); + + var s3= db.Queryable().Where(it=>it.name!=null).ToSql(); + UValidate.Check(s3.Key, + @"SELECT [id],[name] FROM [UnitFilterClass1] WHERE ( [name] IS NOT NULL ) AND ( [id] > @id1 )", "UnitFilter"); + + + + var s6 = db.Queryable((o, i) => i.id == o.id).Select("o.*").ToSql(); + UValidate.Check(s6.Key, "SELECT o.* FROM [UnitFilterClass1] o ,[UnitFilterClass2] i WHERE ( [i].[id] = [o].[id] ) AND ( [o].[id] > @id0 )", "UnitFilter"); + + var s7 = db.Queryable((o, i) => i.id == o.id).Where(o=>o.id==1).Select("o.*").ToSql(); + UValidate.Check(s7.Key, "SELECT o.* FROM [UnitFilterClass1] o ,[UnitFilterClass2] i WHERE ( [i].[id] = [o].[id] ) AND ( [o].[id] = @id0 ) AND ( [o].[id] > @id1 )", "UnitFilter"); + + var s8 = db.Queryable((o, i) => i.id == o.id).Where(o => o.id == 1).Select("o.*").ToSql(); + UValidate.Check(s8.Key, "SELECT o.* FROM [UnitFilterClass2] o ,[UnitFilterClass1] i WHERE ( [i].[id] = [o].[id] ) AND ( [o].[id] = @id0 ) AND ( [i].[id] > @id1 )", "UnitFilter"); + + + var s9 = db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.id == i.id)) + .Select("o.*").ToSql(); + UValidate.Check(s9.Key, "SELECT o.* FROM [UnitFilterClass1] o Left JOIN [UnitFilterClass2] i ON ( [o].[id] = [i].[id] ) WHERE ( [o].[id] > @id0 )", "UnitFilter"); + + + var s10= db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.id == i.id)) + .Where((o,i) =>i.id==0).Select("o.*").ToSql(); + UValidate.Check(s10.Key, "SELECT o.* FROM [UnitFilterClass1] o Left JOIN [UnitFilterClass2] i ON ( [o].[id] = [i].[id] ) WHERE ( [i].[id] = @id0 ) AND ( [o].[id] > @id1 )", "UnitFilter"); + + var s11 = db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.id == i.id)) + .Select("o.*").ToSql(); + UValidate.Check(s11.Key, "SELECT o.* FROM [UnitFilterClass2] o Left JOIN [UnitFilterClass1] i ON ( [o].[id] = [i].[id] ) WHERE ( [i].[id] > @id0 )", "UnitFilter"); + + db.QueryFilter.Add(new SqlSugar.TableFilterItem(it => it.id==0)); + + var s12 = db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.id == i.id)) + .Select("o.*").ToSql(); + UValidate.Check(s12.Key, "SELECT o.* FROM [UnitFilterClass2] o Left JOIN [UnitFilterClass1] i ON ( [o].[id] = [i].[id] ) WHERE ( [i].[id] > @id0 ) AND ( [o].[id] = @id1 )", "UnitFilter"); + + var s13 = db.Queryable((o, i) => new JoinQueryInfos(JoinType.Left, o.id == i.id)) + .Where(o=>o.name=="") + .Select("o.*").ToSql(); + UValidate.Check(s13.Key, "SELECT o.* FROM [UnitFilterClass2] o Left JOIN [UnitFilterClass1] i ON ( [o].[id] = [i].[id] ) WHERE ( [o].[name] = @name0 ) AND ( [i].[id] > @id1 ) AND ( [o].[id] = @id2 )", "UnitFilter"); + } + public class UnitFilterClass1 + { + public int id { get; set; } + public string name { get; set; } + } + public class UnitFilterClass2 + { + public int id { get; set; } + public string name { get; set; } + } + } +}