update

28810
2020-05-24 02:53:36 +08:00
parent 18de10cf78
commit 4ec638670a
2 changed files with 30 additions and 14 deletions

@@ -12,6 +12,7 @@
- 修复 Enum 类型无元素时的错误;
- **增加 IFreeSql.InsertOrUpdate 方法 [wiki](https://github.com/dotnetcore/FreeSql/wiki/%E6%B7%BB%E5%8A%A0%E6%88%96%E4%BF%AE%E6%94%B9)**
- **增加 ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互)[wiki](https://github.com/dotnetcore/FreeSql/wiki/%E6%9F%A5%E8%AF%A2)**
- **增加 MySql/SqlServer 表达式解析 yyyyMMdd 常用 c# 日期格式化;**
- 增加 WhereCascade/GlobalFilter 表达式子查询的支持;
- 增加 \[Description\] 元数据注释,优先级低于 c# 代码注释;
- 增加 IUpdate.SetIf 方法;

@@ -51,6 +51,7 @@ var list2 = fsql.Select<T>()
```
## Exists子表
```csharp
var list2 = fsql.Select<T>()
.Where(a => fsql.Select<T>()
@@ -79,6 +80,20 @@ var t4 = fsql.Select<T>()
> SqlServer nvarchar/varchar 已兼容表达式解析分别解析为N'' 和 '',优化索引执行计划;
## 日期格式化
```csharp
var t4 = fsql.Select<T>()
.First(a => a.CreateTime.ToString("HH:mm:ss");
// SELECT date_format(a.`CreateTime`, '%H:%i:%s') as1
// FROM `xxx` a
// limit 0,1
```
> v1.5.0 支持了常用 c# 日期格式化yyyy MM dd HH mm ss yy M d H hh h m s tt t
> tt t 为 AM PM
## 自定义解析
```csharp
@@ -122,8 +137,8 @@ var sql1 = fsql.Select<SysModule>()
```csharp
var fsql = new FreeSqlBuilder() //请务必定义成 Singleton 单例模式
.UseGenerateCommandParameterWithLambda(true)
...
.UseGenerateCommandParameterWithLambda(true)
...
var id = 1;
fsql.Select<Song>().Where(a => a.Id == id).ToList();
@@ -139,28 +154,28 @@ fsql.Select<Song>().Where(a => a.Id == id).ToList();
```csharp
var name = "testname";
fsql.Select<TestMySqlStringIsNullable>()
.Where(a => a.varchar == name).ToList();
.Where(a => a.varchar == name).ToList();
fsql.Select<TestMySqlStringIsNullable>()
.Where(a => a.varchar == name.SetDbParameter(10)).ToList();
.Where(a => a.varchar == name.SetDbParameter(10)).ToList();
public class TestMySqlStringIsNullable {
public Guid id { get; set; }
public Guid id { get; set; }
[Column(DbType = "varchar(100)")]
public string varchar { get; set; }
[Column(DbType = "varchar(100)")]
public string varchar { get; set; }
}
[ExpressionCall]
public static class DbFunc {
static ThreadLocal<ExpressionCallContext> context = new ThreadLocal<ExpressionCallContext>();
static ThreadLocal<ExpressionCallContext> context = new ThreadLocal<ExpressionCallContext>();
public static string SetDbParameter(this string that, int size)
{
if (context.Value.DbParameter != null)
context.Value.DbParameter.Size = size;
return context.Value.ParsedContent["that"];
}
public static string SetDbParameter(this string that, int size)
{
if (context.Value.DbParameter != null)
context.Value.DbParameter.Size = size;
return context.Value.ParsedContent["that"];
}
}
```