在本快速入门中,你将了解 GitHub Copilot 如何通过直接在 Visual Studio Code 中生成上下文感知代码来加速 SQL 和 ORM 开发。 无论是使用 T-SQL 还是使用实体框架、Sequelize、Prisma 或 SQLAlchemy 等 ORM,GitHub Copilot 都可以帮助你搭建表、改进架构并减少重复的脚本,以便可以专注于构建应用程序逻辑。
开始吧
确保已连接到数据库,并使用 MSSQL 扩展打开活动编辑器窗口。 通过此连接, @mssql
聊天参与者可以了解数据库环境的上下文,从而提供准确的上下文感知建议。 如果没有数据库连接,聊天参与者将没有架构或数据上下文来提供有意义的响应。
以下示例使用 AdventureWorksLT2022
示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。
为了获得最佳结果,请调整表和架构名称以匹配自己的环境。
确保聊天包含 @mssql
前缀。 例如,键入 @mssql
后跟问题或提示。 这可确保聊天参与者了解你请求与 SQL 相关的帮助。
使用 GitHub Copilot 生成代码
使用 GitHub Copilot 生成反映已连接数据库的结构的 SQL 和 ORM 兼容代码,并遵循最佳做法。 从定义表和关系到脚本视图、生成迁移文件或搭建数据访问层和 API 的基架,GitHub Copilot 可帮助你更快、更自信地移动。
下面是通过聊天参与者可以询问的常见用例和示例:
生成 SQL 代码
GitHub Copilot 可以帮助你为各种开发方案生成 SQL 代码,从脚本编写、创建和修改表到编写存储过程和视图。 这些示例演示如何使用 GitHub Copilot 自动执行重复 SQL 脚本,并遵循 T-SQL 开发的最佳做法。
- 以
SalesLT
语句形式CREATE TABLE
编写架构中的所有表的脚本SQL
。 -
SQL
在当前数据库中编写存储过程。 该过程应从SalesLT.Customer
表中LastName
检索与给定参数匹配的所有客户。 请确保使用 T-SQL 最佳做法。 - 将
SalesLT.Customer
表脚本编写为CREATE TABLE
语句,包括所有约束和索引。 - 生成一个
SQL
脚本来创建一个视图,该视图联接SalesLT.Customer
和SalesLT.SalesOrderHeader
表并显示客户名称及其订单总额。 - 编写一个
SQL
脚本,通过向SalesLT.Customer
表中添加一个默认时间戳的last_updated
列来进行更改。
生成 ORM 迁移
GitHub Copilot 可以根据所选的架构上下文和框架生成 ORM 兼容的迁移和模型定义。 从 Sequelize 到 Entity Framework、Prisma 和 SQLAlchemy,GitHub Copilot 可帮助搭建与应用程序数据模型相符的基架更改。
生成 Sequelize (JavaScript) 模型以将列 (
varchar(256)
) 添加到email
SalesLT.Customer
表中。在 C# 中生成一个 Entity Framework 模型类,以表示一个包含
id
、name
和description
列的SalesLT.ProductModel
表。基于现有
SalesLT.Product
表在 C# 中生成实体框架模型。编写 SQLAlchemy 代码以定义
SalesLT.OrderDetails
具有id
、order_date
字段和customer_id
字段的表,确保与Python
表的兼容性。使用 SQLAlchemy 编写参数化查询,该查询从
SalesLT.Customer
LastName
表中检索与提供的参数匹配的所有客户。更新现有的 Prisma 模型(schema.prisma),以定义一个包含
id
、customer_id
和order_date
字段的新SalesLT.Order
模型。为
SalesLT.Product
表生成 SQLAlchemy 模型类,包括列和数据类型。
生成样本应用代码
GitHub Copilot 还可以帮助搭建与 SQL 数据库交互的后端和前端组件。 这些示例演示如何使用常用堆栈(如 Azure Functions、Node.js、Django 和 Next.js)从架构转到工作应用程序代码。
无服务器后端 SQL 绑定与 Blazor
以下示例演示了可与 GitHub Copilot Chat 一起使用的完整提示,以搭建端到端解决方案的基架。 这些提示包括详细说明和上下文,以帮助 Copilot 跨后端层和前端层生成准确的结构化代码。
使用适用于 Functions 和 Blazor WebAssembly 的 Azure SQL 绑定生成全堆栈应用。 执行以下步骤:
后端:Azure Functions(C#),SQL 绑定
- 配置为
SQL Bindings
从SalesLT.Customer
表中自动读取和写入数据。 - 使用以下终结点实现 HTTP 触发的函数:
-
GET /api/customers
– 获取所有客户。 -
GET /api/customers/{id}
– 按 ID 获取特定客户。 -
POST /api/customers
- 创建新客户。 -
PUT /api/customers/{id}
– 更新现有客户。 -
DELETE /api/customers/{id}
– 删除客户。
-
- 使用
Dependency Injection
进行数据库连接和日志记录。 - 包含一个
appsettings.json
文件,用于存储数据库连接字符串和环境变量。 - 使用
Azure Functions Core Tools
在本地运行和测试函数。
- 配置为
前端:Blazor WebAssembly (可选)
- 创建一个使用 API 的
Blazor WebAssembly
前端。 - 显示包含客户数据和表单的表以添加新客户。
- 使用
HttpClient
调用Azure Functions
终结点。 - 实现双向数据绑定以动态处理表单输入。
- 使用
Bootstrap
或Blazor
组件设置样式和布局。
- 创建一个使用 API 的
确保项目包括有关在本地运行 Azure Functions
后端和 Blazor WebAssembly
前端的安装说明,以及数据库连接的正确 .env
或 local.settings.json
配置。
具有 Node.js 和 Next.js 的 Full-Stack
下面是 GitHub Copilot Chat 中提供的详细提示,用于生成完整的后端设置,包括 API 路由和数据库集成。
使用 Express 和 Node.js 生成一个连接到本地 SQL 数据库的 REST API。 将 Tedious 包用于 SQL Server 连接,将 Prisma 用作 ORM。 执行以下步骤:
后端:Node.js + Express
- 使用
Prisma
和Tedious
作为SQL
服务器驱动程序,建立数据库连接。 - 使用以下终结点实现 API 路由
SalesLT.Customer
:-
GET /customers
– 获取所有客户。 -
GET /customers/:id
– 按 ID 获取特定客户。 -
POST /customers
- 创建新客户。 -
PUT /customers/:id
– 更新现有客户。 -
DELETE /customers/:id
– 删除客户。
-
- 配置
Prisma
映射SalesLT.Customer
表,并使用prisma migrate dev
生成数据库迁移。 - 使用
dotenv
用于环境变量(数据库凭据、端口等)。 - 添加
Jest
用于测试 API 终结点。
- 使用
前端:Next.js + TypeScript (可选)
- 创建一个
Next.js
前端以使用 API。 - 显示包含客户数据和表单的表以添加新客户。
- 使用
React
钩子(useState
和useEffect
)动态管理状态和提取数据。 - 使用
Tailwind CSS
. 设置 UI 样式。 - 实现服务器端数据提取(
getServerSideProps
)在Next.js
中以提高性能。
- 创建一个
确保项目包含独立运行后端和前端的设置说明,以及数据库连接的正确 .env
配置。
后端:Django + Django REST 框架
下面是 GitHub Copilot Chat 中提供的详细提示,用于生成完整的后端设置,包括 API 路由和数据库集成。
使用Django
为SalesLT.Customer
表搭建Django REST Framework
的后端架构。 执行以下步骤:
使用 Django 的
ModelViewSet
实现 API 路由,包含以下终结点:-
GET /customers
– 获取所有客户。 -
GET /customers/{id}
– 按 ID 获取特定客户。 -
POST /customers
- 创建新客户。 -
PUT /customers/{id}
– 更新现有客户。 -
DELETE /customers/{id}
– 删除客户。
-
添加有关使用
python manage.py makemigrations
和migrate
生成数据库迁移的说明。
反馈:代码生成
为了帮助我们优化和改进 MSSQL 扩展的 GitHub Copilot,请使用以下 GitHub 问题模板提交反馈: GitHub Copilot 反馈
提交反馈时,请考虑包括:
测试方案 – 告诉我们你关注哪些领域,例如架构创建、查询生成、安全性、本地化。
效果良好 - 描述任何感觉流畅、有用或超出预期的体验。
问题或漏洞 – 包括任何问题、不一致或令人困惑的行为。 屏幕截图或屏幕录制特别有用。
改进建议 - 分享改进可用性、扩大覆盖范围或增强 GitHub Copilot 响应的想法。