Skip to content

Commit 6ab7766

Browse files
committed
- 修复 3.2.696 自动分表 bug;#1527 e798601
1 parent 3c47aaf commit 6ab7766

File tree

4 files changed

+203
-98
lines changed

4 files changed

+203
-98
lines changed

Examples/base_entity/Program.cs

Lines changed: 101 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -601,113 +601,21 @@ static void Main(string[] args)
601601
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
602602
#endregion
603603

604-
var iouSetSql01 = fsql.InsertOrUpdate<User1>()
605-
.SetSource(Enumerable.Range(0, 5).Select(a => new User1 { Id = Guid.NewGuid(), Nickname = $"nickname{a}", Username = $"username{a}", Description = $"desc{a}" }).ToArray())
606-
.UpdateSet((a, b) => a.Sort == b.Sort + 10)
607-
.UpdateSet((a, b) => a.Nickname == "xxx")
608-
.ToSql();
604+
609605

610606
var sqlastable1 = fsql.Select<CurrentDetail>(101).AsTable((t, o) => "current_detail_230501").ToSql();
611607
var sqlastable2 = fsql.Update<CurrentDetail>(101).AsTable("current_detail_230501").Set(t => t.StatuId, 1).ToSql();
612608
var sqlastable3 = fsql.Delete<CurrentDetail>(101).AsTable("current_detail_230501").ToSql();
613609

614-
fsql.Delete<OracleLongRaw1>().Where("1=1").ExecuteAffrows();
615-
var longRawData = Encoding.UTF8.GetBytes(string.Join(",", Enumerable.Range(1, 2000).Select(a => "中国人")));
616-
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(false).ExecuteAffrows();
617-
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(true).ExecuteAffrows();
618-
var longRaw1 = fsql.Select<OracleLongRaw1>().ToList();
619-
620-
MarketingRestrictions restrictions = new MarketingRestrictions();
621-
622-
if (restrictions.Id == Guid.Empty)
623-
{
624-
restrictions.CreatedBy = 100;
625-
}
626-
else
627-
{
628-
restrictions.UpdatedBy = 100;
629-
restrictions.UpdatedTime = DateTime.Now;
630-
}
631-
632-
int ret = fsql.InsertOrUpdate<MarketingRestrictions>()
633-
.SetSource(restrictions)
634-
.UpdateColumns(r => new {
635-
r.Describe,
636-
r.IsLimitUsePoints,
637-
r.Status,
638-
r.StartTime,
639-
r.EndTime,
640-
r.UpdatedBy,
641-
r.UpdatedTime
642-
})
643-
.ExecuteAffrows();
644-
645-
646-
var query2222 = fsql.Select<Student2222>()
647-
.AsTable((t, o) => string.Format(o, "hash2"))
648-
.Where(p => p.Name.Contains("search"))
649-
.GroupBy(a => new { a.ClassId })
650-
.WithTempQuery(a => a.Key);
651-
var sql11111 = fsql.Select<Class1111>()
652-
.AsTable((t, o) => string.Format(o, "hash1"))
653-
.Where(s => query2222
654-
.ToList(p => p.ClassId)
655-
.Contains(s.Id))
656-
.ToSql(s => new
657-
{
658-
s.Id,
659-
s.Name,
660-
});
661-
662-
var isusers01 = fsql.Select<Achievement>()
663-
.Where(e => e.Property("项目执行情况") == "结题")
664-
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
665-
.ToSql(e => new
666-
{
667-
e.Key.ProjectLevel,
668-
Test = e.Value.Group.Property("批准经费总额(万元)"),
669-
});
670-
isusers01 = fsql.Select<Achievement>()
671-
.Where(e => e.Property("项目执行情况") == "结题")
672-
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
673-
.WithTempQuery(e => new
674-
{
675-
e.Key.ProjectLevel,
676-
Test = e.Value.Group.Property("批准经费总额(万元)"),
677-
})
678-
.ToSql();
679-
680-
var bulkUsers = new[] {
681-
new IdentityUser1 { Nickname = "nickname11", Username = "username11" },
682-
new IdentityUser1 { Nickname = "nickname12", Username = "username12" },
683-
new IdentityUser1 { Nickname = "nickname13", Username = "username13" },
684-
685-
new IdentityUser1 { Nickname = "nickname21", Username = "username21" },
686-
new IdentityUser1 { Nickname = "nickname22", Username = "username22" },
687-
new IdentityUser1 { Nickname = "nickname23", Username = "username23" }
688-
};
689-
fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows();
690-
fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows();
691-
bulkUsers = fsql.Select<IdentityUser1>().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray();
692-
bulkUsers[0].Nickname += "_bulkupdate";
693-
bulkUsers[1].Nickname += "_bulkupdate";
694-
bulkUsers[2].Nickname += "_bulkupdate";
695-
fsql.Update<IdentityUser1>().SetSource(bulkUsers).ExecuteSqlBulkCopy();
696-
697-
698-
var objtsql1 = fsql.Select<object>().WithSql("select * from user1").ToList();
699-
var objtsql2 = fsql.Select<object>().WithSql("select * from user1").ToList<User1>();
700-
701610
var astsql = fsql.Select<AsTableLog, Sys_owner>()
702611
.InnerJoin((a, b) => a.id == b.Id)
703-
.OrderBy((a,b) => a.createtime)
612+
.OrderBy((a, b) => a.createtime)
704613
.ToSql();
705614

706615

707616
//var table = fsql.CodeFirst.GetTableByEntity(typeof(AsTableLog));
708617
//table.SetAsTable(new ModAsTableImpl(fsql), table.ColumnsByCs[nameof(AsTableLog.click)]);
709618

710-
711619
var testitems = new[]
712620
{
713621
new AsTableLog{ msg = "msg01", createtime = DateTime.Parse("2022-1-1 13:00:11"), click = 1 },
@@ -725,6 +633,10 @@ static void Main(string[] args)
725633
var sqlat = sqlatb.ToSql();
726634
var sqlatr = sqlatb.ExecuteAffrows();
727635

636+
//var sqlatc1 = fsql.Delete<AsTableLog>().Where(a => a.click < 0);
637+
//var sqlatca1 = sqlatc1.ToSql();
638+
//var sqlatcr1 = sqlatc1.ExecuteAffrows();
639+
728640
var sqlatc1 = fsql.Delete<AsTableLog>().Where(a => a.id == Guid.NewGuid() && a.createtime == DateTime.Parse("2022-3-8 15:00:13"));
729641
var sqlatca1 = sqlatc1.ToSql();
730642
var sqlatcr1 = sqlatc1.ExecuteAffrows();
@@ -815,6 +727,101 @@ static void Main(string[] args)
815727
});
816728

817729

730+
var iouSetSql01 = fsql.InsertOrUpdate<User1>()
731+
.SetSource(Enumerable.Range(0, 5).Select(a => new User1 { Id = Guid.NewGuid(), Nickname = $"nickname{a}", Username = $"username{a}", Description = $"desc{a}" }).ToArray())
732+
.UpdateSet((a, b) => a.Sort == b.Sort + 10)
733+
.UpdateSet((a, b) => a.Nickname == "xxx")
734+
.ToSql();
735+
736+
fsql.Delete<OracleLongRaw1>().Where("1=1").ExecuteAffrows();
737+
var longRawData = Encoding.UTF8.GetBytes(string.Join(",", Enumerable.Range(1, 2000).Select(a => "中国人")));
738+
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(false).ExecuteAffrows();
739+
fsql.Insert(new OracleLongRaw1 { data = longRawData }).NoneParameter(true).ExecuteAffrows();
740+
var longRaw1 = fsql.Select<OracleLongRaw1>().ToList();
741+
742+
MarketingRestrictions restrictions = new MarketingRestrictions();
743+
744+
if (restrictions.Id == Guid.Empty)
745+
{
746+
restrictions.CreatedBy = 100;
747+
}
748+
else
749+
{
750+
restrictions.UpdatedBy = 100;
751+
restrictions.UpdatedTime = DateTime.Now;
752+
}
753+
754+
int ret = fsql.InsertOrUpdate<MarketingRestrictions>()
755+
.SetSource(restrictions)
756+
.UpdateColumns(r => new {
757+
r.Describe,
758+
r.IsLimitUsePoints,
759+
r.Status,
760+
r.StartTime,
761+
r.EndTime,
762+
r.UpdatedBy,
763+
r.UpdatedTime
764+
})
765+
.ExecuteAffrows();
766+
767+
768+
var query2222 = fsql.Select<Student2222>()
769+
.AsTable((t, o) => string.Format(o, "hash2"))
770+
.Where(p => p.Name.Contains("search"))
771+
.GroupBy(a => new { a.ClassId })
772+
.WithTempQuery(a => a.Key);
773+
var sql11111 = fsql.Select<Class1111>()
774+
.AsTable((t, o) => string.Format(o, "hash1"))
775+
.Where(s => query2222
776+
.ToList(p => p.ClassId)
777+
.Contains(s.Id))
778+
.ToSql(s => new
779+
{
780+
s.Id,
781+
s.Name,
782+
});
783+
784+
var isusers01 = fsql.Select<Achievement>()
785+
.Where(e => e.Property("项目执行情况") == "结题")
786+
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
787+
.ToSql(e => new
788+
{
789+
e.Key.ProjectLevel,
790+
Test = e.Value.Group.Property("批准经费总额(万元)"),
791+
});
792+
isusers01 = fsql.Select<Achievement>()
793+
.Where(e => e.Property("项目执行情况") == "结题")
794+
.GroupBy(e => new { ProjectLevel = e.Property("项目级别") })
795+
.WithTempQuery(e => new
796+
{
797+
e.Key.ProjectLevel,
798+
Test = e.Value.Group.Property("批准经费总额(万元)"),
799+
})
800+
.ToSql();
801+
802+
var bulkUsers = new[] {
803+
new IdentityUser1 { Nickname = "nickname11", Username = "username11" },
804+
new IdentityUser1 { Nickname = "nickname12", Username = "username12" },
805+
new IdentityUser1 { Nickname = "nickname13", Username = "username13" },
806+
807+
new IdentityUser1 { Nickname = "nickname21", Username = "username21" },
808+
new IdentityUser1 { Nickname = "nickname22", Username = "username22" },
809+
new IdentityUser1 { Nickname = "nickname23", Username = "username23" }
810+
};
811+
fsql.Insert(bulkUsers).NoneParameter().ExecuteAffrows();
812+
fsql.Insert(bulkUsers).IgnoreInsertValueSql(a => a.Nickname).NoneParameter().ExecuteAffrows();
813+
bulkUsers = fsql.Select<IdentityUser1>().OrderByDescending(a => a.Id).Limit(3).ToList().ToArray();
814+
bulkUsers[0].Nickname += "_bulkupdate";
815+
bulkUsers[1].Nickname += "_bulkupdate";
816+
bulkUsers[2].Nickname += "_bulkupdate";
817+
fsql.Update<IdentityUser1>().SetSource(bulkUsers).ExecuteSqlBulkCopy();
818+
819+
820+
var objtsql1 = fsql.Select<object>().WithSql("select * from user1").ToList();
821+
var objtsql2 = fsql.Select<object>().WithSql("select * from user1").ToList<User1>();
822+
823+
824+
818825
var usergroupRepository = fsql.GetAggregateRootRepository<UserGroup>();
819826
usergroupRepository.Delete(a => true);
820827
usergroupRepository.Insert(new[]{

FreeSql/FreeSql.xml

Lines changed: 98 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

FreeSql/Internal/CommonProvider/DeleteProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public void ToSqlFetch(Action<StringBuilder> fetch)
196196
}
197197

198198
var sb = new StringBuilder();
199-
if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true)
199+
if (_table.AsTableImpl != null && string.IsNullOrWhiteSpace(_tableRule?.Invoke(_table.DbName)) == true)
200200
{
201201
var oldTableRule = _tableRule;
202202
var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils);
@@ -231,7 +231,7 @@ async public Task ToSqlFetchAsync(Func<StringBuilder, Task> fetchAsync)
231231
}
232232

233233
var sb = new StringBuilder();
234-
if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true)
234+
if (_table.AsTableImpl != null && string.IsNullOrWhiteSpace(_tableRule?.Invoke(_table.DbName)) == true)
235235
{
236236
var oldTableRule = _tableRule;
237237
var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils);

FreeSql/Internal/CommonProvider/UpdateProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ public void ToSqlFetch(Action<StringBuilder> fetch)
10081008
ToSqlWhere(newwhere);
10091009

10101010
var sb = new StringBuilder();
1011-
if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true)
1011+
if (_table.AsTableImpl != null && string.IsNullOrWhiteSpace(_tableRule?.Invoke(_table.DbName)) == true)
10121012
{
10131013
var oldTableRule = _tableRule;
10141014
var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils);
@@ -1042,7 +1042,7 @@ async public Task ToSqlFetchAsync(Func<StringBuilder, Task> fetchAsync)
10421042
ToSqlWhere(newwhere);
10431043

10441044
var sb = new StringBuilder();
1045-
if (_table.AsTableImpl != null && _tableRule != null && string.IsNullOrWhiteSpace(_tableRule(_table.DbName)) == true)
1045+
if (_table.AsTableImpl != null && string.IsNullOrWhiteSpace(_tableRule?.Invoke(_table.DbName)) == true)
10461046
{
10471047
var oldTableRule = _tableRule;
10481048
var names = _table.AsTableImpl.GetTableNamesBySqlWhere(newwhere.ToString(), _params, new SelectTableInfo { Table = _table }, _commonUtils);

0 commit comments

Comments
 (0)