diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index 743835e4..9c6cd88b 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -532,14 +532,5 @@
-
-
- 批量注入 Repository,可以参考代码自行调整
-
-
-
-
-
-
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/390.cs b/FreeSql.Tests/FreeSql.Tests/Issues/390.cs
index bac347c8..05c5cd96 100644
--- a/FreeSql.Tests/FreeSql.Tests/Issues/390.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/390.cs
@@ -13,29 +13,30 @@ namespace FreeSql.Tests.Issues
[Fact]
public void SelectTest()
{
- IFreeSql db = new FreeSql.FreeSqlBuilder()
- .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=1")
- .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
- .UseGenerateCommandParameterWithLambda(true)
- .UseAutoSyncStructure(true)
- .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
- .Build();
+ using (IFreeSql db = new FreeSql.FreeSqlBuilder()
+ .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=1")
+ .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
+ .UseGenerateCommandParameterWithLambda(true)
+ .UseAutoSyncStructure(true)
+ .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
+ .Build())
+ {
+ var startTime = DateTime.Now;
+ var endTime = DateTime.Now;
- var startTime = DateTime.Now;
- var endTime = DateTime.Now;
-
- var cou = db.Select()
- .Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
- .GroupBy(a =>
- new
- {
- a.HospitalName,
- a.Dep,
- a.Instrna,
- a.ConfirmDoctorName,
- a.ScheduledDttm.Date
- })
- .Count();
+ var cou = db.Select()
+ .Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
+ .GroupBy(a =>
+ new
+ {
+ a.HospitalName,
+ a.Dep,
+ a.Instrna,
+ a.ConfirmDoctorName,
+ a.ScheduledDttm.Date
+ })
+ .Count();
+ }
}
[Table(Name = "V_HospitalReport")]
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/462.cs b/FreeSql.Tests/FreeSql.Tests/Issues/462.cs
index 0fa0162f..9811134a 100644
--- a/FreeSql.Tests/FreeSql.Tests/Issues/462.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/462.cs
@@ -13,24 +13,26 @@ namespace FreeSql.Tests.Issues
[Fact]
public void SelectTest()
{
- IFreeSql db = new FreeSql.FreeSqlBuilder()
- .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=1")
- .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
- .UseGenerateCommandParameterWithLambda(true)
- .UseAutoSyncStructure(true)
- .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
- .Build();
+ using (var db = new FreeSql.FreeSqlBuilder()
+ .UseConnectionString(FreeSql.DataType.Oracle, "user id=1user;password=123456;data source=//127.0.0.1:1521/XE;Pooling=true;Max Pool Size=1")
+ .UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
+ .UseGenerateCommandParameterWithLambda(true)
+ .UseAutoSyncStructure(true)
+ .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
+ .Build())
+ {
- var startTime = DateTime.Now;
- var endTime = DateTime.Now;
+ var startTime = DateTime.Now;
+ var endTime = DateTime.Now;
- var exp0 = 10;
- var cou = db.Select()
- .Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
- .ToList(a => new
- {
- subCount = db.Select().Where(b => b.SCHEDULED_DTTM == exp0).Count()
- });
+ var exp0 = 10;
+ var cou = db.Select()
+ .Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
+ .ToList(a => new
+ {
+ subCount = db.Select().Where(b => b.SCHEDULED_DTTM == exp0).Count()
+ });
+ }
}
[Table(Name = "V_HospitalReport22")]
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/467.cs b/FreeSql.Tests/FreeSql.Tests/Issues/467.cs
index 3719b768..708246f2 100644
--- a/FreeSql.Tests/FreeSql.Tests/Issues/467.cs
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/467.cs
@@ -14,28 +14,29 @@ namespace FreeSql.Tests.Issues
[Fact]
public void SelectTest()
{
- IFreeSql fsql = new FreeSql.FreeSqlBuilder()
- .UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=1")
- //.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
- .UseGenerateCommandParameterWithLambda(true)
- .UseAutoSyncStructure(true)
- .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
- .Build();
+ using (IFreeSql fsql = new FreeSql.FreeSqlBuilder()
+ .UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=1")
+ //.UseNameConvert(FreeSql.Internal.NameConvertType.ToUpper)
+ .UseGenerateCommandParameterWithLambda(true)
+ .UseAutoSyncStructure(true)
+ .UseMonitorCommand(cmd => Trace.WriteLine("\r\n线程" + Thread.CurrentThread.ManagedThreadId + ": " + cmd.CommandText))
+ .Build())
+ {
+ var orderSql = fsql
+ .Select()
+ .As(nameof(PayOrder).ToLower())
+ .Where(p => p.Status == 1)
+ .ToSql(p => new
+ {
+ p.PayOrderId,
+ p.Money,
+ p.OrderTime
+ }, FreeSql.FieldAliasOptions.AsProperty);
- var orderSql = fsql
- .Select()
- .As(nameof(PayOrder).ToLower())
- .Where(p => p.Status == 1)
- .ToSql(p => new
- {
- p.PayOrderId,
- p.Money,
- p.OrderTime
- }, FreeSql.FieldAliasOptions.AsProperty);
-
- Assert.Equal(@"SELECT payorder.""PayOrderId"", payorder.""Money"", payorder.""OrderTime""
+ Assert.Equal(@"SELECT payorder.""PayOrderId"", payorder.""Money"", payorder.""OrderTime""
FROM ""pay_order"" payorder
WHERE (payorder.""Status"" = 1)", orderSql);
+ }
}
[JsonObject(MemberSerialization.OptIn), Table(Name = "pay_order", DisableSyncStructure = true)]
diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/476.cs b/FreeSql.Tests/FreeSql.Tests/Issues/476.cs
new file mode 100644
index 00000000..592ed47f
--- /dev/null
+++ b/FreeSql.Tests/FreeSql.Tests/Issues/476.cs
@@ -0,0 +1,36 @@
+using FreeSql.DataAnnotations;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Threading;
+using Xunit;
+
+namespace FreeSql.Tests.Issues
+{
+ public class _476
+ {
+ [Fact]
+ public void SelectTest()
+ {
+ var fsql = g.mysql;
+ var repo = fsql.GetRepository();
+ var list = repo.Select.Where(m => m.Name == "辽宁省").AsTreeCte().ToList();
+ }
+
+ [Table(Name = "Area476")]
+ public class AreaEntity
+ {
+ [Column(IsIdentity = true)]
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public long ParentId { get; set; }
+
+ [Navigate(nameof(ParentId))]
+ public AreaEntity Parent { get; set; }
+ [Navigate(nameof(ParentId))]
+ public List Childs { get; set; }
+ }
+ }
+}
diff --git a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs
index bc78db29..d8657041 100644
--- a/FreeSql/Extensions/FreeSqlGlobalExtensions.cs
+++ b/FreeSql/Extensions/FreeSqlGlobalExtensions.cs
@@ -451,6 +451,8 @@ public static partial class FreeSqlGlobalExtensions
});
sql2ctePath = $"{sql2ctePath} as cte_path, ";
}
+ if (select._orm.CodeFirst.IsAutoSyncStructure)
+ (select._orm.CodeFirst as CodeFirstProvider)._dicSycedTryAdd(tb.Type, cteName); //#476
var sql2 = select
.AsAlias((type, old) => type == tb.Type ? old.Replace("wct2", "wct1") : old)
.AsTable((type, old) => type == tb.Type ? cteName : old)