mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
- 修复 AsTreeCte 开启自动迁移时,错误的创建了 as_tree_cte 表;#476
This commit is contained in:
parent
5a664180c2
commit
8fb330b528
@ -532,14 +532,5 @@
|
||||
<param name="that"></param>
|
||||
<returns></returns>
|
||||
</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>
|
||||
</doc>
|
||||
|
@ -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<V_HospitalReport>()
|
||||
.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<V_HospitalReport>()
|
||||
.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")]
|
||||
|
@ -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<V_HospitalReport>()
|
||||
.Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
|
||||
.ToList(a => new
|
||||
{
|
||||
subCount = db.Select<V_HOSPITALREPORT>().Where(b => b.SCHEDULED_DTTM == exp0).Count()
|
||||
});
|
||||
var exp0 = 10;
|
||||
var cou = db.Select<V_HospitalReport>()
|
||||
.Where(a => a.ScheduledDttm.Date >= startTime.Date && a.ScheduledDttm.Date <= (endTime.AddDays(1)).Date)
|
||||
.ToList(a => new
|
||||
{
|
||||
subCount = db.Select<V_HOSPITALREPORT>().Where(b => b.SCHEDULED_DTTM == exp0).Count()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
[Table(Name = "V_HospitalReport22")]
|
||||
|
@ -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<PayOrder>()
|
||||
.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<PayOrder>()
|
||||
.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)]
|
||||
|
36
FreeSql.Tests/FreeSql.Tests/Issues/476.cs
Normal file
36
FreeSql.Tests/FreeSql.Tests/Issues/476.cs
Normal file
@ -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<AreaEntity>();
|
||||
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<AreaEntity> Childs { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user