dotnetcore / EntityFrameworkCore.KingbaseES

Entity Framework Core provider for KingbaseES Database
PostgreSQL License
44 stars 6 forks source link

当Linq语句的group by中含有Year/Month时,会抛一个跟TimeZone有关的例外,但相关的列的类型是 timestamp without time zone. #19

Open hatzhang opened 2 months ago

hatzhang commented 2 months ago

如下, linq语句的group by中包含Year/Month时会抛例外,BegDate在c#中的类型为Datetime, 在数据库中为 timestamp without time zone.

 group q by new
 {
     q.LineSeq,
     YearMonth = new { Year = q.BegDate.Year, Month = q.BegDate.Month }
 };

例外:

System.ArgumentException: timestamp argument to AtTimeZone had unknown store type datetime (Parameter 'timestamp')
   at Kdbndp.EntityFrameworkCore.KingbaseES.Query.KdbndpSqlExpressionFactory.AtTimeZone(SqlExpression timestamp, SqlExpression timeZone, Type type, RelationalTypeMapping typeMapping)
   at Kdbndp.EntityFrameworkCore.KingbaseES.Query.KdbndpSqlExpressionFactory.AtUtc(SqlExpression timestamp, RelationalTypeMapping typeMapping)
   at Kdbndp.EntityFrameworkCore.KingbaseES.Query.ExpressionTranslators.Internal.KdbndpDateTimeMemberTranslator.TryConvertAwayFromTimestampTz(SqlExpression timestamp, SqlExpression& result)
   at Kdbndp.EntityFrameworkCore.KingbaseES.Query.ExpressionTranslators.Internal.KdbndpDateTimeMemberTranslator.DatePart(SqlExpression instance, String partName, Boolean floor)
   at Kdbndp.EntityFrameworkCore.KingbaseES.Query.ExpressionTranslators.Internal.KdbndpDateTimeMemberTranslator.Translate(SqlExpression instance, MemberInfo member, Type returnType, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.Query.RelationalMemberTranslatorProvider.<>c__DisplayClass6_0.<Translate>b__0(IMemberTranslator t)
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Microsoft.EntityFrameworkCore.Query.RelationalMemberTranslatorProvider.Translate(SqlExpression instance, MemberInfo member, Type returnType, IDiagnosticsLogger`1 logger)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMember(MemberExpression memberExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.TranslateInternal(Expression expression, Boolean applyDefaultTypeMapping)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.Translate(Expression expression, Boolean applyDefaultTypeMapping)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExpression(Expression expression, Boolean applyDefaultTypeMapping)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupingKey(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupingKey(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupingKey(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupBy(ShapedQueryExpression source, LambdaExpression keySelector, LambdaExpression elementSelector, LambdaExpression resultSelector)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.Translate(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.Translate(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
wangpengxpy commented 4 days ago

17266428016628

@hatzhang 列类型给的有问题?