Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
EFCore.BulkExtensions
提交
7dc4ed78
E
EFCore.BulkExtensions
项目概览
jobily
/
EFCore.BulkExtensions
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
EFCore.BulkExtensions
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7dc4ed78
编写于
7月 17, 2023
作者:
B
Boris Djurdjevic
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added config ApplySubqueryLimit
上级
a05f8693
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
3 deletion
+12
-3
EFCore.BulkExtensions/BulkConfig.cs
EFCore.BulkExtensions/BulkConfig.cs
+8
-0
EFCore.BulkExtensions/SqlAdapters/PostgreSql/PostgreSqlQueryBuilder.cs
...tensions/SqlAdapters/PostgreSql/PostgreSqlQueryBuilder.cs
+4
-3
未找到文件。
EFCore.BulkExtensions/BulkConfig.cs
浏览文件 @
7dc4ed78
...
...
@@ -255,6 +255,14 @@ public class BulkConfig
/// </remarks>
public
bool
DoNotUpdateIfTimeStampChanged
{
get
;
set
;
}
/// <summary>
/// Default is zero '0'. When set to larger value it appends: LIMIT 'N', to generated query
/// </summary>
/// <remarks>
/// Used only with PostgreSql.
/// </remarks>
public
int
ApplySubqueryLimit
{
get
;
set
;
}
=
0
;
/// <summary>
/// Spatial Reference Identifier - for SQL Server with NetTopologySuite. Default value is <c>4326</c>.
/// </summary>
...
...
EFCore.BulkExtensions/SqlAdapters/PostgreSql/PostgreSqlQueryBuilder.cs
浏览文件 @
7dc4ed78
...
...
@@ -131,13 +131,14 @@ public class PostgreSqlQueryBuilder : SqlQueryBuilder
var
columnsToUpdate
=
columnsListEquals
.
Where
(
c
=>
tableInfo
.
PropertyColumnNamesUpdateDict
.
ContainsValue
(
c
)).
ToList
();
var
equalsColumns
=
SqlQueryBuilder
.
GetCommaSeparatedColumns
(
columnsToUpdate
,
equalsTable
:
"EXCLUDED"
).
Replace
(
"["
,
@""""
).
Replace
(
"]"
,
@""""
);
bool
applySubqueryLimit
=
columnsToUpdate
.
Count
==
0
||
string
.
IsNullOrWhiteSpace
(
equalsColumns
);
var
subqueryText
=
applySubqueryLimit
?
"LIMIT 1 "
:
""
;
int
subqueryLimit
=
tableInfo
.
BulkConfig
.
ApplySubqueryLimit
;
var
subqueryText
=
subqueryLimit
>
0
?
$"LIMIT
{
subqueryLimit
}
"
:
""
;
bool
onUpdateDoNothing
=
columnsToUpdate
.
Count
==
0
||
string
.
IsNullOrWhiteSpace
(
equalsColumns
);
q
=
$"INSERT INTO
{
tableInfo
.
FullTableName
}
(
{
commaSeparatedColumns
}
) "
+
$"(SELECT
{
commaSeparatedColumns
}
FROM
{
tableInfo
.
FullTempTableName
}
) "
+
subqueryText
+
$"ON CONFLICT (
{
updateByColumns
}
) "
+
(
applySubqueryLimit
(
onUpdateDoNothing
?
$"DO NOTHING"
:
$"DO UPDATE SET
{
equalsColumns
}
"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录