查询
FreeSql 在查询数据下足了功夫,链式查询语法、多表查询、表达式函数支持得非常到位。
SqlServer WithLock/WithIndex
var list = fsql.Select<Region>()
.WithLock()
.Limit(1).ToList();
var list = fsql.Select<Region>()
.WithLock(SqlServerLock.NoLock | SqlServerLock.NoWait)
.Limit(1).ToList();
var list = fsql.Select<Region>()
.WithLock()
.WithIndex("idx_01")
.Limit(1).ToList();
多表:
var list = Select<Region, T2>()
.InnerJoin((a, b) => a.x == b.xx)
.WithLock(SqlServerLock.NoLock, new Dictionary<Type, bool>
[typeof(T2)] = false
.WithIndex("idx_01", new Dictionary<Type, string>
[typeof(T2)] = "idx_02"
.Limit(1).ToList();
全局设置 NoLock:
fsql.SetGlobalSelectWithLock(SqlServerLock.NoLock, null);
fsql.SetGlobalSelectWithLock(SqlServerLock.NoLock, new Dictionary<Type, bool>
[typeof(Region)] = true,
[typeof(T2)] = true
});
特别介绍 WhereDynamicFilter
《高效理解 FreeSql WhereDynamicFilter,深入了解设计初衷》
open in new window
ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互),支持的操作符:
-
Contains/StartsWith/EndsWith/NotContains/NotStartsWith/NotEndsWith:包含/不包含,like '%xx%',或者 like 'xx%',或者 like '%xx'
-
Equal/NotEqual:等于/不等于
-
GreaterThan/GreaterThanOrEqual:大于/大于等于
-
LessThan/LessThanOrEqual:小于/小于等于
-
Range:范围查询
-
DateRange:日期范围,有特殊处理 value[1] + 1
-
Any/NotAny:是否符合 value 中任何一项(直白的说是 SQL IN)
-
Custom:
自定义解析
open in new window
DynamicFilterInfo dyfilter = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
""Logic"": ""And"",
""Filters"":
{ ""Field"": ""id"", ""Operator"": ""Equals"", ""Value"": 1 },
""Logic"": ""Or"",
""Filters"":
{ ""Field"": ""id"", ""Operator"": ""Equals"", ""Value"": 2 },
{ ""Field"": ""id"", ""Operator"": ""Equals"", ""Value"": 3 }
}");