mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +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;
|
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)
|
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
|
#region 初始化 IFreeSql
|
||||||
var fsql = new FreeSql.FreeSqlBuilder()
|
var fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseAutoSyncStructure(true)
|
.UseAutoSyncStructure(true)
|
||||||
@ -99,6 +107,15 @@ namespace base_entity
|
|||||||
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
|
||||||
#endregion
|
#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`");
|
var names = (fsql.Select<object>() as Select0Provider)._commonUtils.SplitTableName("`Backups.ProductStockBak`");
|
||||||
|
|
||||||
|
|
||||||
@ -124,19 +141,22 @@ namespace base_entity
|
|||||||
|
|
||||||
var wdy1 = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
|
var wdy1 = JsonConvert.DeserializeObject<DynamicFilterInfo>(@"
|
||||||
{
|
{
|
||||||
""Logic"" : ""Or"",
|
""Logic"" : ""And"",
|
||||||
""Filters"" :
|
""Filters"" :
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
""Field"" : ""title"",
|
""Logic"" : ""Or"",
|
||||||
""Operator"" : ""eq"",
|
|
||||||
""Value"" : ""product-1"",
|
|
||||||
""Filters"" :
|
""Filters"" :
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
""Field"" : ""title"",
|
""Field"" : ""title"",
|
||||||
""Operator"" : ""contains"",
|
""Operator"" : ""contains"",
|
||||||
""Value"" : ""product-1111"",
|
""Value"" : ""product-1111"",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""Field"" : ""title"",
|
||||||
|
""Operator"" : ""contains"",
|
||||||
|
""Value"" : ""product-2222"",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -212,8 +232,10 @@ namespace base_entity
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
", config);
|
", config);
|
||||||
|
Products.Select.WhereDynamicFilter(wdy1).ToList();
|
||||||
Products.Select.WhereDynamicFilter(wdy2).ToList();
|
Products.Select.WhereDynamicFilter(wdy2).ToList();
|
||||||
|
|
||||||
|
|
||||||
var items1 = Products.Select.Limit(10).OrderByDescending(a => a.CreateTime).ToList();
|
var items1 = Products.Select.Limit(10).OrderByDescending(a => a.CreateTime).ToList();
|
||||||
var items2 = fsql.Select<Products>().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>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</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>
|
</members>
|
||||||
</doc>
|
</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 ie = dywhere as IEnumerable;
|
||||||
var ieidx = 0;
|
var ieidx = 0;
|
||||||
var isEntityType = false;
|
var isEntityType = false;
|
||||||
|
var isAny = false;
|
||||||
sb.Append(aliasAndDot).Append(this.QuoteSqlName(pk1.Attribute.Name)).Append(" IN ("); //or会造成扫全表
|
sb.Append(aliasAndDot).Append(this.QuoteSqlName(pk1.Attribute.Name)).Append(" IN ("); //or会造成扫全表
|
||||||
foreach (var i in ie)
|
foreach (var i in ie)
|
||||||
{
|
{
|
||||||
|
isAny = true;
|
||||||
if (ieidx > 0) sb.Append(",");
|
if (ieidx > 0) sb.Append(",");
|
||||||
if (ieidx == 0)
|
if (ieidx == 0)
|
||||||
{
|
{
|
||||||
@ -305,6 +307,7 @@ namespace FreeSql.Internal
|
|||||||
else sb.Append(this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, i)));
|
else sb.Append(this.FormatSql("{0}", Utils.GetDataReaderValue(pk1.Attribute.MapType, i)));
|
||||||
++ieidx;
|
++ieidx;
|
||||||
}
|
}
|
||||||
|
if (isAny == false) return "";
|
||||||
sb.Append(")");
|
sb.Append(")");
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user