From 3d205041b08ce21d7ac5d9e5a6c2be67cf9e4079 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 17 Feb 2023 18:35:44 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20ISelect=20AsTy?= =?UTF-8?q?pe=20=E7=9A=84=E7=88=B6=E5=AD=90=E7=B1=BB=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=9B#1427?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 32 ++++++++++++++++++++++++- FreeSql.DbContext/FreeSql.DbContext.xml | 9 ------- FreeSql/Internal/CommonExpression.cs | 2 ++ 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index e0a59735..2cf63e12 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -465,6 +465,16 @@ namespace base_entity public string Name { get; set; } public Point Center { get; set; } } + public abstract class BaseEntity2 + { + [Column(IsPrimary = true, IsIdentity = true)] + public long Id { get; set; } + } + + public class Student : BaseEntity2 + { + public string Name { get; set; } + } static void Main(string[] args) { @@ -526,7 +536,7 @@ namespace base_entity .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") - .UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2") + //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=tedb;Pooling=true;Maximum Pool Size=2") //.UseConnectionString(FreeSql.DataType.PostgreSQL, "Host=192.168.164.10;Port=5432;Username=postgres;Password=123456;Database=toc;Pooling=true;Maximum Pool Size=2") //.UseNameConvert(FreeSql.Internal.NameConvertType.ToLower) @@ -560,6 +570,26 @@ namespace base_entity #endregion fsql.UseJsonMap(); + var type = typeof(Student); + + var sw111 = fsql.Queryable() + .AsType(type) + .Where(s => (s as BaseEntity2).Id == 1) + .ToSql(); + + Console.WriteLine(sw111); + + var testsql01 = fsql.Select() + //.GroupBy(a => new { a.Avatar, a.GroupId }) + //.Having(g => g.Sum(g.Value.Sort) > 0) + .WithTempQuery(a => new + { + a.Avatar, a.GroupId, sum1 = SqlExt.Sum(a.Sort).ToValue() + }) + .Where(a => a.sum1 > 0) + .ToSql(); + + fsql.Aop.ParseExpression += (_, e) => { if (fsql.Ado.DataType == DataType.PostgreSQL) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 26522f10..537315e2 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -800,14 +800,5 @@ - - - 批量注入 Repository,可以参考代码自行调整 - - - - - - diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index af38d602..ba4ded16 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -1723,6 +1723,8 @@ namespace FreeSql.Internal expStack.Push(oper2Parm); else if (oper2Parm.Type != typeof(object) && oper2Parm.Type.IsAssignableFrom(exp2.Type)) expStack.Push(oper2Parm); + else if (oper2Parm.Type == typeof(object) && tsc._tables[0].Table != null && exp2.Type.IsAssignableFrom(tsc._tables[0].Table.Type) == true) + expStack.Push(oper2Parm); else expStack.Push(Expression.Parameter(exp2.Type, oper2Parm.Name)); }