Skip to content
sunkaixuan edited this page May 6, 2019 · 9 revisions

1.Create Filters

   public static SqlSugarClient GetInstance()
   {
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, IsAutoCloseConnection = true });

            //Single table query gobal filter
            db.QueryFilter.Add(new SqlFilterItem()
            {
                FilterValue = filterDb =>
                {
                    //Writable logic
                    return new SqlFilterResult() { Sql = " isDelete=0"  };//Global string perform best
                }
            });

            //Multi-table query gobal filter
            db.QueryFilter.Add(new SqlFilterItem()
            {
                FilterValue = filterDb =>
                {
                    //Writable logic
                    return new SqlFilterResult() { Sql = " main.isDelete=0" };
                },
                IsJoinQuery=true
            });

            //Specific filters
            db.QueryFilter.Add(new SqlFilterItem()
            {
                FilterName= "Myfilter",
                FilterValue = filterDb =>
                {
                    //Writable logic
                    return new SqlFilterResult() { Sql = "Name='jack'" };
                }
            });
            return db;
    }

2.Example

var sql = db.Queryable<Order>().ToSql();//single table filter
//SELECT [Id],[Name],[Price],[CreateTime] FROM [Order]  WHERE  isDelete=0 
Console.WriteLine(sql);


var sql2 = db.Queryable<Order,OrderItem>((main,ot)=> main.Id==ot.OrderId).ToSql();//multi table filter
//SELECT [Id],[Name],[Price],[CreateTime] FROM [Order] main  ,[OrderDetail]  ot  WHERE ( [main].[Id] = [ot].[OrderId] )  AND  main.isDelete=0 
Console.WriteLine(sql2);


var sql3 = db.Queryable<Order>().Filter("Myfilter").ToSql();// Myfilter+Gobal 
//SELECT [Id],[Name],[Price],[CreateTime] FROM [Order]  WHERE Name='jack'    AND  isDelete=0 
Console.WriteLine(sql3);

var sql4 = db.Queryable<Order>().Filter("Myfilter",isDisabledGobalFilter:true).ToSql();//only Myfilter
//SELECT [Id],[Name],[Price],[CreateTime] FROM [Order]  WHERE Name='jack'  
Console.WriteLine(sql4);
Clone this wiki locally