[Transaction(TransactionOption = TransactionOption.Supported)]
public virtual LoadResult FindBy3(string userName, DataSourceLoadOptions loadOptions)
LoadResult result = new LoadResult();
var con = DataSourceUtils.CreateConnection();
Dictionary<string, string> mappings = new Dictionary<string, string>()
{ "USER_NAME_ALIAS", "USER_NAME" },
SELECT * FROM [QUOTA_LEAVE]
, (select count(*) from [QUOTA_LEAVE]) as C
FROM [QUOTA_LEAVE_CTE] q left outer join BBC.dbo.BB_USER as u on q.USER_ID = u.USER_ID
GROUP BY q.[QUOTA_LEAVE_ID]
StringBuilder sqlTemplate = new StringBuilder(rawSQL);
var compiler = new SqlServerTemplateCompiler() { UseLegacyPagination = false};
var queryCTE = new TemplateQuery("CTE") { IncludeSelectClause = false };
userName.IfNotNullOrEmpty(p =>
queryCTE.Where(mappings.ItemOrDefault("USER_NAME"), "like", $"%{p}%")
if (!String.IsNullOrEmpty(userName))
queryCTE.Where(mappings.ItemOrDefault("USER_NAME"), "like", $"%{userName}%");
var query = new TemplateQuery() { Template = sqlTemplate, IncludeSelectClause = false, IncludeWhereClause = false, IncludeHavingClause = false }; ;
userName.IfNotNullOrEmpty(p => query.Where(mappings.ItemOrDefault("USER_NAME"), "like", $"%{p}%"));
query.SelectRaw("USER_NAME as USER_NAME_TEST00");
query.WhereRaw("USER_NAME like ?", "%a%");
query.HavingRaw("COUNT(*) > ?", 0);
Dictionary<string, string> sortMappings = mappings;
OffsetAndOrder(loadOptions, query, sortMappings);
CompileTotalCount(loadOptions, sqlTemplate);
query.AddPartialQuery(queryCTE);
var ctx = compiler.Compile(query);
Load(loadOptions, result, con, compiler, ctx);