Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Efcore.Pg
提交
d5eed857
E
Efcore.Pg
项目概览
jobily
/
Efcore.Pg
12 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
Efcore.Pg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d5eed857
编写于
5月 25, 2022
作者:
S
Shay Rojansky
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix Math.Round/Truncate over decimal
Fixes #2379 (cherry picked from commit
be5576bc
)
上级
3676d3cc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
4 deletion
+8
-4
src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlMathTranslator.cs
...ry/ExpressionTranslators/Internal/NpgsqlMathTranslator.cs
+8
-4
未找到文件。
src/EFCore.PG/Query/ExpressionTranslators/Internal/NpgsqlMathTranslator.cs
浏览文件 @
d5eed857
...
@@ -195,13 +195,15 @@ public class NpgsqlMathTranslator : IMethodCallTranslator
...
@@ -195,13 +195,15 @@ public class NpgsqlMathTranslator : IMethodCallTranslator
if
(
TruncateMethodInfos
.
Contains
(
method
))
if
(
TruncateMethodInfos
.
Contains
(
method
))
{
{
var
argument
=
arguments
[
0
];
var
argument
=
arguments
[
0
];
// Result of trunc for float/double is always double in server side
// C# has Round over decimal/double/float only so our argument will be one of those types (compiler puts convert node)
// In database result will be same type except for float which returns double which we need to cast back to float.
var
result
=
(
SqlExpression
)
_sqlExpressionFactory
.
Function
(
var
result
=
(
SqlExpression
)
_sqlExpressionFactory
.
Function
(
"trunc"
,
"trunc"
,
new
[]
{
argument
},
new
[]
{
argument
},
nullable
:
true
,
nullable
:
true
,
argumentsPropagateNullability
:
new
[]
{
true
,
false
,
false
},
argumentsPropagateNullability
:
new
[]
{
true
,
false
,
false
},
typeof
(
double
)
);
argument
.
Type
==
typeof
(
float
)
?
typeof
(
double
)
:
argument
.
Type
);
if
(
argument
.
Type
==
typeof
(
float
))
if
(
argument
.
Type
==
typeof
(
float
))
{
{
...
@@ -214,13 +216,15 @@ public class NpgsqlMathTranslator : IMethodCallTranslator
...
@@ -214,13 +216,15 @@ public class NpgsqlMathTranslator : IMethodCallTranslator
if
(
RoundMethodInfos
.
Contains
(
method
))
if
(
RoundMethodInfos
.
Contains
(
method
))
{
{
var
argument
=
arguments
[
0
];
var
argument
=
arguments
[
0
];
// Result of round for float/double is always double in server side
// C# has Round over decimal/double/float only so our argument will be one of those types (compiler puts convert node)
// In database result will be same type except for float which returns double which we need to cast back to float.
var
result
=
(
SqlExpression
)
_sqlExpressionFactory
.
Function
(
var
result
=
(
SqlExpression
)
_sqlExpressionFactory
.
Function
(
"round"
,
"round"
,
new
[]
{
argument
},
new
[]
{
argument
},
nullable
:
true
,
nullable
:
true
,
argumentsPropagateNullability
:
new
[]
{
true
,
true
},
argumentsPropagateNullability
:
new
[]
{
true
,
true
},
typeof
(
double
)
);
argument
.
Type
==
typeof
(
float
)
?
typeof
(
double
)
:
argument
.
Type
);
if
(
argument
.
Type
==
typeof
(
float
))
if
(
argument
.
Type
==
typeof
(
float
))
{
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录