mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修复 1.8.0-preview WhereDynamic IN 机制;#431
This commit is contained in:
parent
bb089438e2
commit
d266446062
@ -51,18 +51,26 @@ namespace base_entity
|
||||
public CollationTypeEnum val { get; set; } = CollationTypeEnum.Binary;
|
||||
}
|
||||
|
||||
class Sys_reg_user
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid OwnerId { get; set; }
|
||||
public string UnionId { get; set; }
|
||||
|
||||
[Navigate(nameof(OwnerId))]
|
||||
public Sys_owner Owner { get; set; }
|
||||
}
|
||||
class Sys_owner
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid RegUserId { get; set; }
|
||||
|
||||
[Navigate(nameof(RegUserId))]
|
||||
public Sys_reg_user RegUser { get; set; }
|
||||
}
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// var result2 = Newtonsoft.Json.JsonConvert.DeserializeObject<TestEnumCls>(@"
|
||||
//{
|
||||
// ""val"": ""Binary""
|
||||
//}");
|
||||
// var result1 = System.Text.Json.JsonSerializer.Deserialize<TestEnumCls>(@"
|
||||
//{
|
||||
// ""val"": ""Binary""
|
||||
//}");
|
||||
|
||||
|
||||
#region 初始化 IFreeSql
|
||||
var fsql = new FreeSql.FreeSqlBuilder()
|
||||
.UseAutoSyncStructure(true)
|
||||
@ -99,6 +107,15 @@ namespace base_entity
|
||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||
#endregion
|
||||
|
||||
var tsql1 = fsql.Select<Sys_reg_user>()
|
||||
.Include(a => a.Owner)
|
||||
.Where(a => a.UnionId == "xxx")
|
||||
.ToSql();
|
||||
var tsql2 = fsql.Select<Sys_owner>()
|
||||
.Where(a => a.RegUser.UnionId == "xxx2")
|
||||
.ToSql();
|
||||
|
||||
|
||||
var names = (fsql.Select<object>() as Select0Provider)._commonUtils.SplitTableName("`Backups.ProductStockBak`");
|
||||
|
||||
|
||||
@ -124,19 +141,22 @@ namespace base_entity
|
||||
|
||||
var wdy1 = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
|
||||
{
|
||||
""Logic"" : ""Or"",
|
||||
""Logic"" : ""And"",
|
||||
""Filters"" :
|
||||
[
|
||||
{
|
||||
""Field"" : ""title"",
|
||||
""Operator"" : ""eq"",
|
||||
""Value"" : ""product-1"",
|
||||
""Logic"" : ""Or"",
|
||||
""Filters"" :
|
||||
[
|
||||
{
|
||||
""Field"" : ""title"",
|
||||
""Operator"" : ""contains"",
|
||||
""Value"" : ""product-1111"",
|
||||
},
|
||||
{
|
||||
""Field"" : ""title"",
|
||||
""Operator"" : ""contains"",
|
||||
""Value"" : ""product-2222"",
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -212,8 +232,10 @@ namespace base_entity
|
||||
]
|
||||
}
|
||||
", config);
|
||||
Products.Select.WhereDynamicFilter(wdy1).ToList();
|
||||
Products.Select.WhereDynamicFilter(wdy2).ToList();
|
||||
|
||||
|
||||
var items1 = Products.Select.Limit(10).OrderByDescending(a => a.CreateTime).ToList();
|
||||
var items2 = fsql.Select<Products>().Limit(10).OrderByDescending(a => a.CreateTime).ToList();
|
||||
|
||||
|
@ -532,14 +532,5 @@
|
||||
<param name="that"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||
<summary>
|
||||
批量注入 Repository,可以参考代码自行调整
|
||||
</summary>
|
||||
<param name="services"></param>
|
||||
<param name="globalDataFilter"></param>
|
||||
<param name="assemblies"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
File diff suppressed because one or more lines are too long
@ -292,9 +292,11 @@ namespace FreeSql.Internal
|
||||
var ie = dywhere as IEnumerable;
|
||||
var ieidx = 0;
|
||||
var isEntityType = false;
|
||||
var isAny = false;
|
||||
sb.Append(aliasAndDot).Append(this.QuoteSqlName(pk1.Attribute.Name)).Append(" IN ("); //or会造成扫全表
|
||||
foreach (var i in ie)
|
||||
{
|
||||
isAny = true;
|
||||
if (ieidx > 0) sb.Append(",");
|
||||
if (ieidx == 0)
|
||||
{
|
||||
@ -305,6 +307,7 @@ namespace FreeSql.Internal
|
||||
else sb.Append(this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, i)));
|
||||
++ieidx;
|
||||
}
|
||||
if (isAny == false) return "";
|
||||
sb.Append(")");
|
||||
return sb.ToString();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user