mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
- 完善 AsTreeCte + ToUpdate/ToDelete 实现树所有子节点删除或更新;
This commit is contained in:
@ -1808,6 +1808,22 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
|
||||
var select = fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte()
|
||||
//.OrderBy("a.cte_level desc") //递归层级
|
||||
;
|
||||
// var list = select.ToList(); //自己调试看查到的数据
|
||||
select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
Assert.False(fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1821,6 +1837,8 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -1764,6 +1764,22 @@ WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
|
||||
var select = fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte()
|
||||
//.OrderBy("a.cte_level desc") //递归层级
|
||||
;
|
||||
// var list = select.ToList(); //自己调试看查到的数据
|
||||
select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
Assert.False(fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1777,6 +1793,8 @@ WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -1915,7 +1915,7 @@ WHERE ((b.`IsFinished` OR a.`TaskType` = 3) AND b.`EnabledMark` = 1)", groupsql1
|
||||
Assert.Equal("110100", t3[0].Childs[0].Childs[0].Code);
|
||||
Assert.Equal("110101", t3[0].Childs[0].Childs[1].Code);
|
||||
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsCteTree().OrderBy(a => a.Code).ToTreeList();
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte().OrderBy(a => a.Code).ToTreeList();
|
||||
//Assert.Single(t3);
|
||||
//Assert.Equal("100000", t3[0].Code);
|
||||
//Assert.Single(t3[0].Childs);
|
||||
@ -1924,18 +1924,34 @@ WHERE ((b.`IsFinished` OR a.`TaskType` = 3) AND b.`EnabledMark` = 1)", groupsql1
|
||||
//Assert.Equal("110100", t3[0].Childs[0].Childs[0].Code);
|
||||
//Assert.Equal("110101", t3[0].Childs[0].Childs[1].Code);
|
||||
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsCteTree().OrderBy(a => a.Code).ToList();
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "中国").AsTreeCte().OrderBy(a => a.Code).ToList();
|
||||
//Assert.Equal(4, t3.Count);
|
||||
//Assert.Equal("100000", t3[0].Code);
|
||||
//Assert.Equal("110000", t3[1].Code);
|
||||
//Assert.Equal("110100", t3[2].Code);
|
||||
//Assert.Equal("110101", t3[3].Code);
|
||||
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "北京").AsCteTree().OrderBy(a => a.Code).ToList();
|
||||
//t3 = fsql.Select<VM_District_Child>().Where(a => a.Name == "北京").AsTreeCte().OrderBy(a => a.Code).ToList();
|
||||
//Assert.Equal(3, t3.Count);
|
||||
//Assert.Equal("110000", t3[0].Code);
|
||||
//Assert.Equal("110100", t3[1].Code);
|
||||
//Assert.Equal("110101", t3[2].Code);
|
||||
|
||||
//var select = fsql.Select<VM_District_Child>()
|
||||
// .Where(a => a.Name == "中国")
|
||||
// .AsTreeCte()
|
||||
// //.OrderBy("a.cte_level desc") //递归层级
|
||||
// ;
|
||||
//// var list = select.ToList(); //自己调试看查到的数据
|
||||
//select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
//Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
// .Where(a => a.Name == "中国")
|
||||
// .AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
//Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
//Assert.False(fsql.Select<VM_District_Child>()
|
||||
// .Where(a => a.Name == "中国")
|
||||
// .AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1949,6 +1965,8 @@ WHERE ((b.`IsFinished` OR a.`TaskType` = 3) AND b.`EnabledMark` = 1)", groupsql1
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -1800,6 +1800,22 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
|
||||
var select = fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte()
|
||||
//.OrderBy("a.cte_level desc") //递归层级
|
||||
;
|
||||
// var list = select.ToList(); //自己调试看查到的数据
|
||||
select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
Assert.False(fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1813,6 +1829,8 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -1859,6 +1859,22 @@ WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
|
||||
var select = fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte()
|
||||
//.OrderBy("a.cte_level desc") //递归层级
|
||||
;
|
||||
// var list = select.ToList(); //自己调试看查到的数据
|
||||
select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
Assert.False(fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1872,6 +1888,8 @@ WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -1750,6 +1750,22 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
|
||||
Assert.Equal("中国[100000] -> 北京[110000]", t4[1].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 北京市[110100]", t4[2].path);
|
||||
Assert.Equal("中国[100000] -> 北京[110000] -> 东城区[110101]", t4[3].path);
|
||||
|
||||
var select = fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte()
|
||||
//.OrderBy("a.cte_level desc") //递归层级
|
||||
;
|
||||
// var list = select.ToList(); //自己调试看查到的数据
|
||||
select.ToUpdate().Set(a => a.testint, 855).ExecuteAffrows();
|
||||
Assert.Equal(855, fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Distinct().First(a => a.testint));
|
||||
|
||||
Assert.Equal(4, select.ToDelete().ExecuteAffrows());
|
||||
Assert.False(fsql.Select<VM_District_Child>()
|
||||
.Where(a => a.Name == "中国")
|
||||
.AsTreeCte().Any());
|
||||
}
|
||||
|
||||
[Table(Name = "D_District")]
|
||||
@ -1763,6 +1779,8 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
|
||||
|
||||
[Column(StringLength = 6)]
|
||||
public virtual string ParentCode { get; set; }
|
||||
|
||||
public int testint { get; set; }
|
||||
}
|
||||
[Table(Name = "D_District", DisableSyncStructure = true)]
|
||||
public class VM_District_Child : BaseDistrict
|
||||
|
@ -9,6 +9,7 @@ public class g
|
||||
static Lazy<IFreeSql> mysqlLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
||||
.UseConnectionString(FreeSql.DataType.OdbcMySql, "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Persist Security Info=False;Trusted_Connection=Yes;UID=root;PWD=root;DATABASE=cccddd_odbc;Charset=utf8;SslMode=none;Max pool size=2")
|
||||
//.UseConnectionFactory(FreeSql.DataType.OdbcMySql, () => new System.Data.Odbc.OdbcConnection("Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Persist Security Info=False;Trusted_Connection=Yes;UID=root;PWD=root;DATABASE=cccddd_odbc;Charset=utf8;SslMode=none;"))
|
||||
//.UseConnectionString(FreeSql.DataType.OdbcMySql, "Driver={MySQL ODBC 8.0 Unicode Driver};Server=192.168.164.10;port=33061;Persist Security Info=False;Trusted_Connection=Yes;UID=root;PWD=root;DATABASE=cccddd_odbc;Charset=utf8;SslMode=none;Max pool size=2")
|
||||
.UseAutoSyncStructure(true)
|
||||
.UseMonitorCommand(
|
||||
cmd => Trace.WriteLine(cmd.CommandText), //监听SQL命令对象,在执行前
|
||||
|
Reference in New Issue
Block a user