Initial_commit_SecMPS_v2
This commit is contained in:
57
api_sqlsugar/VolPro.Core/Generic/GenericSqlServerProvider.cs
Normal file
57
api_sqlsugar/VolPro.Core/Generic/GenericSqlServerProvider.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using Dapper;
|
||||
using VolPro.Core.Configuration;
|
||||
using VolPro.Core.EFDbContext;
|
||||
using VolPro.Core.Extensions.AutofacManager;
|
||||
using VolPro.Core.UserManager;
|
||||
using VolPro.Entity.DomainModels;
|
||||
|
||||
namespace VolPro.Core.Generic
|
||||
{
|
||||
public class GenericSqlServerProvider : GenericDbProviderBase
|
||||
{
|
||||
protected override string LeftQuote => "[";
|
||||
protected override string RightQuote => "]";
|
||||
|
||||
public GenericSqlServerProvider() : base()
|
||||
{
|
||||
}
|
||||
|
||||
protected override string BuildPageSql(string baseWithWhereSql, string selectColumns, string orderBy, int page, int rows)
|
||||
{
|
||||
int offset = (page - 1) * rows;
|
||||
int end = page * rows;
|
||||
|
||||
if (AppSetting.UseSqlserver2008)
|
||||
{
|
||||
return $@"
|
||||
SELECT {selectColumns}
|
||||
FROM (
|
||||
SELECT ROW_NUMBER() OVER ({orderBy}) AS RowNum, {selectColumns}
|
||||
FROM (
|
||||
{baseWithWhereSql}
|
||||
) AS S
|
||||
) AS X
|
||||
WHERE X.RowNum BETWEEN {offset + 1} AND {end}
|
||||
ORDER BY X.RowNum";
|
||||
}
|
||||
return $@"
|
||||
SELECT {selectColumns}
|
||||
FROM (
|
||||
{baseWithWhereSql}
|
||||
) AS S
|
||||
{orderBy}
|
||||
OFFSET {offset} ROWS FETCH NEXT {rows} ROWS ONLY";
|
||||
}
|
||||
protected override string BuildIdentitySql(TableColumnField keyColumn, bool batch = false)
|
||||
{
|
||||
// 单条插入:使用 SCOPE_IDENTITY()
|
||||
if (!batch)
|
||||
{
|
||||
return $";SELECT SCOPE_IDENTITY();";
|
||||
}
|
||||
// 批量插入:使用 OUTPUT INSERTED.[Id],由上层拼接在 VALUES 之前
|
||||
return $" OUTPUT INSERTED.{LeftQuote}{keyColumn.ColumnName}{RightQuote}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user