1.符号使用问题注意
子查询时提供了两种写法:类c#中的LINQ写法和sql语句,需要注意的是,如果使用类LINQ写法,不能在代码中输入>,<,>=,<=符号,暂时只发现这些符号,使用符号后,生成的SQL语句中无对应符号,猜想可能是和委托符号=>冲突,生成会自动过滤,如:
有商品表和库存表,需要实现通过商品ID查询当前商品下是否有库存数量-分销数量<=预警数量的条件查询
//模拟商品表 表名为tableA
public class classA{public int id {get;set;}//商品表主键public string name {get;set;}public int warningCount {get;set;}//预警数量public int selectCount {get;set;}//查询的复合条件的库存数据数量
}
//模拟库存表 表名为tableB
public class classB
{public int id {get;set;}//库存表主键public int tableB_id{get;set;}//商品表主键public string name{get;set;}public int stockCount {get;set;}//库存数量public int distributionCount {get;set;}//分销数量
}string subSqlStr = @"(SELECT COUNT(*) FROM `tableB` WHERE (( `tableB_id` = `a`.`F_Id` ) AND (( `stockCount` - `distributionCount` ) <= `a`.`warningCount` )))";
var queryView = repository.Db.Queryable<classA>().Select((a) => new GoodinfoEntity(){id = a.id.SelectAll(),//自动匹配表A字段//类LINQ写法,//selectCount = F_SortCode = SqlFunc.Subqueryable<UserEntity>().Count(b => a.F_Id >= b.tableB_id && (b.stockCount - b.distributionCount ) <= a.warningCount),//SQL写法selectCount = SqlFunc.MappingColumn<decimal>(subSqlStr),});