update

2881099
2022-05-26 17:10:09 +08:00
parent b78fc884ed
commit c2c6527f97

@@ -37,7 +37,33 @@ repo.InsertOrUpdate(实体);
---
# 4、WithSql
## 4、弱类型 CURD
```c#
fsql.Insert<object>().AsType(实体类型)
.AppendData(data)
.ExecuteAffrows();
fsql.Update<object>().AsType(实体类型)
.SetSource(data)
.ExecuteAffrows();
fsql.Select<object>().AsType(实体类型)
.Where(a => (a as BaseEntity).Id == 1)
.ExecuteAffrows();
//或者仓储
var repo = fsql.GetRepository<object>();
repo.AsType(实体类型);
repo.Insert(..);
repo.Update(..);
repo.Delete(..);
```
---
# 5、WithSql
```csharp
fsql.Select<Topic>()
.WithSql("select * from Topic where clicks > @val", new { val = 10 })
@@ -51,7 +77,7 @@ fsql.Select<Topic>()
---
# 5、你不知道的,指定字段返回
# 6、你不知道的,指定字段返回
```csharp
fsql.Select<t1>()
@@ -73,7 +99,7 @@ fsql.Select<t1>()
---
# 6、Dto 映射查询
# 7、Dto 映射查询
映射查询支持单表/多表,在查询数据之前映射(不是先查询所有字段再到内存映射)
@@ -117,7 +143,7 @@ fsql.Select<Song>().ToList(a => new Song(a.id) { xxx = a.ext })
---
# 7、父子关系表
# 8、父子关系表
```csharp
List<Category> t2 = fsql.Select<Category>.ToTreeList();
@@ -145,7 +171,7 @@ Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
```
# 8、级联加载
# 9、级联加载
有设置导航属性关系的(支持一对多、多对多):
@@ -190,7 +216,7 @@ fsql.Select<Tag>().IncludeMany(a => a.Goods.Select(b => new Goods { Id = b.Id, T
---
# 9、WhereCascade
# 10、WhereCascade
多表查询时像isdeleted每个表都给条件挺麻烦的。WhereCascade使用后生成sql时所有表都附上这个条件。
@@ -216,7 +242,7 @@ WHERE t1.IsDeleted = 0
---
# 10、WhereDynamicFilter
# 11、WhereDynamicFilter
ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互),支持的操作符:
@@ -227,6 +253,7 @@ ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互)
- Range范围查询
- DateRange日期范围有特殊处理 value\[1\] + 1
- Any/NotAny是否符合 value 中任何一项(直白的说是 SQL IN
- Custom自定义解析
```csharp
DynamicFilterInfo dyfilter = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
@@ -253,7 +280,7 @@ fsql.Select<VM_District_Parent>().WhereDynamicFilter(dyfilter).ToList();
---
# 11、ISelect.ToDelete、ISelect.ToUpdate
# 12、ISelect.ToDelete、ISelect.ToUpdate
默认 IDelete 不支持导航对象多表关联等。ISelect.ToDelete 可将查询转为删除对象,以便支持导航对象或其他查询功能删除数据,如下:
@@ -275,7 +302,7 @@ DELETE FROM `T1` WHERE id in (select a.id from T1 a left join Options b on b.t1i
---
# 12、保存多对多数据 SaveMany
# 13、保存多对多数据 SaveMany
之前:
@@ -319,7 +346,7 @@ SaveMany【多对多】的机制规则与联级保存的一样如下
---
# 13、自定义表达式函数
# 14、自定义表达式函数
```csharp
[ExpressionCall]
@@ -358,7 +385,7 @@ var sql1 = fsql.Select<SysModule>()
---
# 14、自定义实体特性、与其他 ORM 共用特性
# 15、自定义实体特性、与其他 ORM 共用特性
本功能可实现与其他 ORM 使用一套 Attribute避免维护两份实体特性的烦恼
@@ -400,7 +427,7 @@ class MyColumnAttribute : Attribute {
---
# 15、审计 CURD
# 16、审计 CURD
如果因为某个 sql 骚操作耗时很高,没有一个相关的审计功能,排查起来可以说无从下手。
@@ -421,7 +448,7 @@ fsql.Aop.CurdAfter += (s, e) => {
---
# 16、审计属性值
# 17、审计属性值
实现插入/更新时统一处理某些值,比如某属性的雪花算法值、创建时间值、甚至是业务值。
@@ -446,7 +473,7 @@ class Order {
如果命名规范,可以在 aop 里判断if (e.Property.Name == "createtime") e.Value = DateTime.Now;
# 17、Ado.Net 扩展方法
# 18、Ado.Net 扩展方法
提供了类似 Dapper 的使用方法FreeSql 增加了 IDbConnection/IDbTransaction 对象的扩展方法 Select/Insert/Update/Delete 实现 CRUD。