- 增加 ISelect.OrderBy 重载,与 WhereIf 相同行为;

- 修复 Aop.ParseExpression 使用 FreeParse 方法死循环的 bug;
This commit is contained in:
28810
2019-06-06 12:12:43 +08:00
parent 0c575c7b56
commit 16c6fc334b
15 changed files with 121 additions and 19 deletions

View File

@ -258,9 +258,43 @@ namespace FreeSql.Tests {
public Templates Templates { get; set; }
}
public class SqlFunc {
public static string FormatDateTime() {
return "";
}
}
[Fact]
public void Test1() {
g.sqlite.Aop.ParseExpression = (s, e) => {
if (e.Expression.NodeType == ExpressionType.Call) {
var callExp = e.Expression as MethodCallExpression;
if (callExp.Object.Type == typeof(DateTime) &&
callExp.Method.Name == "ToString" &&
callExp.Arguments.Count == 1 &&
callExp.Arguments[0].Type == typeof(string) &&
callExp.Arguments[0].NodeType == ExpressionType.Constant) {
var format = (callExp.Arguments[0] as ConstantExpression)?.Value?.ToString();
if (string.IsNullOrEmpty(format) == false) {
var tmp = e.FreeParse(callExp.Object);
switch(format) {
case "yyyy-MM-dd HH:mm":
tmp = $"date_format({tmp}, '%Y-%m-%d %H:%i')";
break;
}
e.Result = tmp;
}
}
}
};
g.mysql.Select<NewsArticle>().ToList(a => new {
testaddtime = a.testaddtime.ToString("yyyy-MM-dd HH:mm")
});
var ttdkdk = g.mysql.Select<NewsArticle>().Where<TaskBuild>(a => a.NamespaceName == "ddd").ToSql();
var tsqlddd = g.sqlite.Select<NewsArticle>().Where(a =>