Files
SecMPS/api_sqlsugar/VolPro.Core/Generic/GenericSqlServerProvider.cs
2026-05-15 23:22:48 +08:00

58 lines
1.9 KiB
C#

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}";
}
}
}