Skip to content

Commit e011f8f

Browse files
committed
Merge Conflict
2 parents ddf187c + a3978d7 commit e011f8f

File tree

133 files changed

+5092
-2910
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+5092
-2910
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<!--
1313
经常出于版本交叉问题,暂时关闭,在每个项目上设置版本号
1414
<PropertyGroup>
15-
<Version>3.5.105</Version>
15+
<Version>3.5.205</Version>
1616
</PropertyGroup>
1717
-->
1818

16 KB
Binary file not shown.
8.65 KB
Binary file not shown.

Examples/base_entity/Program.cs

Lines changed: 140 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Newtonsoft.Json;
1414
using Newtonsoft.Json.Linq;
1515
using Npgsql;
16+
using Org.BouncyCastle.Tls;
1617
using System;
1718
using System.Collections;
1819
using System.Collections.Concurrent;
@@ -615,11 +616,107 @@ static void Main(string[] args)
615616
//if (cmd.CommandText.StartsWith(""))
616617
})
617618
.UseLazyLoading(true)
618-
.UseGenerateCommandParameterWithLambda(true)
619+
//.UseGenerateCommandParameterWithLambda(true)
619620
.Build();
620621
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
621622
#endregion
622623

624+
fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunk(10, e =>
625+
{
626+
foreach (var item in e.Object)
627+
Console.WriteLine(item.Nickname);
628+
});
629+
Task.Run(async () =>
630+
{
631+
await foreach (var xxs1 in fsql.Select<User1>().WithTempQuery(a => new { a.Nickname, a.Username }).ToChunkAsyncEnumerable(10))
632+
{
633+
foreach (var item in xxs1)
634+
Console.WriteLine(item.Nickname);
635+
}
636+
}).Wait();
637+
638+
var usergroupRepository = fsql.GetAggregateRootRepository<UserGroup>();
639+
usergroupRepository.Delete(a => true);
640+
usergroupRepository.Insert(new[]{
641+
new UserGroup
642+
{
643+
CreateTime = DateTime.Now,
644+
GroupName = "group1",
645+
UpdateTime = DateTime.Now,
646+
Sort = 1,
647+
User1s = new List<User1>
648+
{
649+
new User1 { Nickname = "nickname11", Username = "username11", Description = "desc11" },
650+
new User1 { Nickname = "nickname12", Username = "username12", Description = "desc12" },
651+
new User1 { Nickname = "nickname13", Username = "username13", Description = "desc13" },
652+
}
653+
},
654+
new UserGroup
655+
{
656+
CreateTime = DateTime.Now,
657+
GroupName = "group2",
658+
UpdateTime = DateTime.Now,
659+
Sort = 2,
660+
User1s = new List<User1>
661+
{
662+
new User1 { Nickname = "nickname21", Username = "username21", Description = "desc21" },
663+
new User1 { Nickname = "nickname22", Username = "username22", Description = "desc22" },
664+
new User1 { Nickname = "nickname23", Username = "username23", Description = "desc23" },
665+
}
666+
},
667+
});
668+
var ugroupFirst = usergroupRepository.Select.First();
669+
ugroupFirst.Sort++;
670+
usergroupRepository.Update(ugroupFirst);
671+
var userRepository = fsql.GetAggregateRootRepository<User1>();
672+
673+
var testsublist1 = fsql.Select<UserGroup>()
674+
.ToList(a => new
675+
{
676+
a.Id,
677+
list = userRepository.Select.Where(b => a.Id == 1).Where(b => b.GroupId == a.Id).ToList(),
678+
list2 = fsql.Select<User1>().Where(b => a.Id == 2).Where(b => b.GroupId == a.Id).ToList(b => b.Nickname),
679+
});
680+
681+
Utils.IsStrict = false;
682+
var user1Tb = fsql.CodeFirst.GetTableByEntity(typeof(User11));
683+
684+
fsql.Delete<User1>().Where("1=1").ExecuteAffrows();
685+
fsql.Insert(new List<User1>
686+
{
687+
new User1 { Nickname = "nickname11", Username = "username11", Description = "desc11" },
688+
new User1 { Nickname = "n2", Username = "u2", Description = "d2" },
689+
new User1 { Nickname = "n3", Username = "u3", Description = "d3" },
690+
}).ExecuteAffrows();
691+
692+
fsql.Insert(new User1()).ExecuteInserted();
693+
fsql.Update<User1>().SetSource(new User1()).ExecuteUpdated();
694+
695+
fsql.InsertOrUpdate<AppInfoEntity>().SetSource(new AppInfoEntity { AppID = "03DN8CW8", AppName = "app_01" }).ExecuteAffrows();
696+
var repo2211 = fsql.GetRepository<AppInfoEntity>();
697+
698+
var appInfo = repo2211.Where(info => info.AppID == "03DN8CW8").First();
699+
appInfo = repo2211.Where(info => info.AppID == "03DN8CW8").First();
700+
var compareDic = new Dictionary<string, object[]>();
701+
var updateInfo = "";
702+
703+
repo2211.Attach(appInfo);
704+
appInfo.AppName = "测试";
705+
compareDic = repo2211.CompareState(appInfo);
706+
Console.WriteLine(appInfo.AppName);
707+
708+
var sql20250205 = fsql.Select<OrderLine, Product>()
709+
.InnerJoin((l, p) => l.ProductId == p.ID)
710+
.GroupBy((l, p) => new { p.ID, ShopType = l.ShopType ?? 0 })
711+
.ToSql(x => new
712+
{
713+
TradeId = x.Key.ID,
714+
ShopType = x.Key.ShopType,
715+
FieldCount = x.CountDistinct(x.Value.Item2.ID),
716+
Count = x.Count(x.Value.Item1.Id),
717+
Kb = (long)x.Sum(x.Value.Item1.Amount)
718+
});
719+
623720
var res = fsql.Select<MemberActionDayCountModel>()
624721
.Where(x => x.Date >= 20230101 && x.Date < 20240101 && x.ScanCode > 0)
625722
.Where(x =>
@@ -765,48 +862,7 @@ static void Main(string[] args)
765862

766863
fsql.Select<Table11>().Where(a => a.Options.Value1 == 100 && a.Options.Value2 == "xx").ToList();
767864

768-
var usergroupRepository = fsql.GetAggregateRootRepository<UserGroup>();
769-
usergroupRepository.Delete(a => true);
770-
usergroupRepository.Insert(new[]{
771-
new UserGroup
772-
{
773-
CreateTime = DateTime.Now,
774-
GroupName = "group1",
775-
UpdateTime = DateTime.Now,
776-
Sort = 1,
777-
User1s = new List<User1>
778-
{
779-
new User1 { Nickname = "nickname11", Username = "username11", Description = "desc11" },
780-
new User1 { Nickname = "nickname12", Username = "username12", Description = "desc12" },
781-
new User1 { Nickname = "nickname13", Username = "username13", Description = "desc13" },
782-
}
783-
},
784-
new UserGroup
785-
{
786-
CreateTime = DateTime.Now,
787-
GroupName = "group2",
788-
UpdateTime = DateTime.Now,
789-
Sort = 2,
790-
User1s = new List<User1>
791-
{
792-
new User1 { Nickname = "nickname21", Username = "username21", Description = "desc21" },
793-
new User1 { Nickname = "nickname22", Username = "username22", Description = "desc22" },
794-
new User1 { Nickname = "nickname23", Username = "username23", Description = "desc23" },
795-
}
796-
},
797-
});
798-
var ugroupFirst = usergroupRepository.Select.First();
799-
ugroupFirst.Sort++;
800-
usergroupRepository.Update(ugroupFirst);
801-
var userRepository = fsql.GetAggregateRootRepository<User1>();
802-
803-
var testsublist1 = fsql.Select<UserGroup>()
804-
.First(a => new
805-
{
806-
a.Id,
807-
list = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(),
808-
list2 = userRepository.Select.Where(b => b.GroupId == a.Id).ToList(b => b.Nickname),
809-
});
865+
810866

811867

812868

@@ -2984,6 +3040,13 @@ public override TestIdAndIdentity Deserialize(object value)
29843040
}
29853041
}
29863042
}
3043+
public class AppInfoEntity
3044+
{
3045+
[Column(IsPrimary = true, Name = "APP_ID")]
3046+
public string AppID { get; set; }
3047+
[Column(Name = "APP_NAME")]
3048+
public string AppName { get; set; }
3049+
}
29873050
public partial class OrderLine22x
29883051
{
29893052

@@ -3510,4 +3573,38 @@ public sealed class MemberActionDayCountModel
35103573
/// </summary>
35113574
public decimal ScanCodeAmount { get; set; }
35123575
#endregion
3576+
}
3577+
[ExpressionCall]
3578+
public static class ExpressionCallExtesions
3579+
{
3580+
static ThreadLocal<ExpressionCallContext> context = new ThreadLocal<ExpressionCallContext>();
3581+
public static int CountDistinct<TKey, TValue>(this ISelectGroupingAggregate<TKey, TValue> that, object column)
3582+
{
3583+
context.Value.Result = $"count(distinct {context.Value.ParsedContent["column"]})";
3584+
return 0;
3585+
}
3586+
}
3587+
3588+
class User11
3589+
{
3590+
public int Id { get; set; } //Id、UserId、User_id
3591+
3592+
public List<Role11> Role11s { get; set; }
3593+
}
3594+
class Role11
3595+
{
3596+
public int Id { get; set; }
3597+
public string Name { get; set; }
3598+
3599+
public List<User11> User11s { get; set; }
3600+
}
3601+
class User11Role11
3602+
{
3603+
public int Id { get; set; }
3604+
3605+
public int User11Id { get; set; }
3606+
public User11 User11 { get; set; }
3607+
3608+
public int Role11Id { get; set; }
3609+
public Role11 Role11 { get; set; }
35133610
}

Examples/zero_entity/Program.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,20 @@
1010

1111
using (var fsql = new FreeSqlBuilder()
1212
.UseConnectionString(DataType.Sqlite, "data source=111.db")
13-
.UseAutoSyncStructure(true)
13+
.UseConnectionString(DataType.MySql, "Server=47.108.219.26;Port=3306;Database=sample;Uid=root;Pwd=xdhl123Qwe;")
14+
.UseAutoSyncStructure(true)
1415
.UseNoneCommandParameter(true)
1516
.UseMonitorCommand(cmd => Console.WriteLine(cmd.CommandText + "\r\n"))
1617
.Build())
1718
{
18-
var json = JsonConvert.SerializeObject(Helper.GetTestDesc());
19+
20+
var schemas = JsonConvert.DeserializeObject<TableDescriptor[]>(File.ReadAllText(@"C:\Users\28810\Downloads\schema.json"));
21+
var context = new ZeroDbContext(fsql);
22+
context.LoadSchemasAndNavigates("Student", tableName => schemas.First(c => c.Name == tableName));
23+
//context.SyncStructure();
24+
var stu = context.Select.Where("id", 38).First();
25+
26+
var json = JsonConvert.SerializeObject(Helper.GetTestDesc());
1927

2028
var dyctx = new ZeroDbContext(fsql, JsonConvert.DeserializeObject<TableDescriptor[]>(@"
2129
[

Examples/zero_entity/zero_entity.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
<ItemGroup>
1515
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.ZeroEntity\FreeSql.Extensions.ZeroEntity.csproj" />
16+
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MySql\FreeSql.Provider.MySql.csproj" />
1617
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Sqlite\FreeSql.Provider.Sqlite.csproj" />
1718
</ItemGroup>
1819

Extensions/FreeSql.Extensions.AggregateRoot/AggregateRootRepository/AggregateRootRepository.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,12 @@ public Dictionary<string, object[]> CompareState(TEntity newdata)
9999
if (string.IsNullOrEmpty(key)) throw new Exception(DbContextErrorStrings.Incomparable_PrimaryKey_NotSet(Orm.GetEntityString(EntityType, newdata)));
100100
if (_states.TryGetValue(key, out var oldState) == false || oldState == null) throw new Exception($"不可对比,数据未被跟踪:{Orm.GetEntityString(EntityType, newdata)}");
101101
AggregateRootTrackingChangeInfo tracking = new AggregateRootTrackingChangeInfo();
102-
AggregateRootUtils.CompareEntityValue(_boundaryName, Orm, EntityType, oldState, newdata, null, tracking);
103-
return new Dictionary<string, object[]>
104-
{
105-
["Insert"] = tracking.InsertLog.Select(a => new object[] { a.Item1, a.Item2 }).ToArray(),
106-
["Delete"] = tracking.DeleteLog.Select(a => new object[] { a.Item1, a.Item2 }).ToArray(),
107-
["Update"] = tracking.UpdateLog.Select(a => new object[] { a.Item1, a.Item2, a.Item3, a.Item4 }).ToArray(),
108-
};
102+
AggregateRootUtils.CompareEntityValue(_boundaryName, Orm, EntityType, oldState.Value, newdata, null, tracking);
103+
var result = new Dictionary<string, object[]>();
104+
if (tracking.InsertLog.Any()) result.Add("Insert", tracking.InsertLog.Select(a => new object[] { a.Item1, a.Item2 }).ToArray());
105+
if (tracking.DeleteLog.Any()) result.Add("Delete", tracking.DeleteLog.Select(a => new object[] { a.Item1, a.Item2 }).ToArray());
106+
if (tracking.UpdateLog.Any()) result.Add("Update", tracking.UpdateLog.Select(a => new object[] { a.Item1, a.Item2, a.Item3, a.Item4 }).ToArray());
107+
return result;
109108
}
110109
public void FlushState()
111110
{

0 commit comments

Comments
 (0)