SuperAPI AI 工具集

dotnet-sqlserver-best-practices

编程与开发

查看项目

更新于 10-16 06:52

技能介绍

该技能面向使用 .NET 与 Entity Framework Core 的 SQL Server 数据库设计与优化,提供约定与速查示例。

用途:统一 SQL Server 的命名、类型选择、索引设计、性能与安全实践。

主要能力:

  • 命名规范:表/列用 PascalCase,主键 PK_{Table}、外键 FK_{Table}{RefTable}、索引 IX{Table}{Column}、唯一索引 UIX、检查约束 CK_、默认约束 DF_ 等模式。
  • 数据类型映射:Guid→uniqueidentifier、string→nvarchar(n)、大数据→nvarchar(max)、decimal→decimal(p,s)、DateTime→datetimeoffset、并发→rowversion 等;推荐使用 nvarchar 与显式长度。
  • 主键:推荐 uniqueidentifier 配合 NEWSEQUENTIALID() 以避免索引碎片,或 int/bigint IDENTITY。
  • 时间戳:使用 datetimeoffset 加 UTC 默认值 SYSUTCDATETIME()。
  • JSON:SQL Server 2016+ 用 nvarchar(max) 存储,配合 ISJSON 检查约束、JSON_VALUE 查询及 EF Core 7+ 的 ToJson()。
  • 索引策略:需手动为外键建索引;唯一索引、复合索引、筛选索引、INCLUDE 覆盖索引、全文索引、列存储索引,并列出不宜建索引的场景。
  • 约束:主键、外键(含删除行为)、检查约束、唯一约束。
  • 性能优化:连接池、批量 SaveChanges、AsNoTracking、编译查询、分页、避免 N+1、AsSplitQuery、查询提示。
  • 维护:更新统计信息、索引碎片检查与重组/重建、索引使用与缺失索引监控、表大小查询。
  • 安全:加密连接、最小权限登录与用户、参数化查询防注入。
  • 特性:SQL Server 2016+ 系统版本化时态表及历史查询。

使用方式:作为技能参考,直接沿用其中命名约定、SQL 语句和 EF Core 配置代码,例如 builder.HasIndex(...)、options.UseSqlServer(connectionString) 等。

适用场景:使用 .NET 与 EF Core 连接 SQL Server 的业务系统设计、评审与优化。

限制:部分能力依赖 SQL Server 2016+ 或 EF Core 7+;资料未提供工具的安装命令、许可与收费信息,相关内容暂未提供。