快速入门:生成代码(预览版)

在本快速入门中,你将了解 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.CustomerSalesLT.SalesOrderHeader表并显示客户名称及其订单总额。
  • 编写一个SQL脚本,通过向SalesLT.Customer表中添加一个默认时间戳的last_updated列来进行更改。

生成 ORM 迁移

GitHub Copilot 可以根据所选的架构上下文和框架生成 ORM 兼容的迁移和模型定义。 从 Sequelize 到 Entity Framework、Prisma 和 SQLAlchemy,GitHub Copilot 可帮助搭建与应用程序数据模型相符的基架更改。

  • 生成 Sequelize (JavaScript) 模型以将列 (varchar(256)) 添加到emailSalesLT.Customer表中。

  • 在 C# 中生成一个 Entity Framework 模型类,以表示一个包含idnamedescription列的SalesLT.ProductModel表。

  • 基于现有 SalesLT.Product 表在 C# 中生成实体框架模型。

  • 编写 SQLAlchemy 代码以定义 SalesLT.OrderDetails 具有 idorder_date字段和 customer_id 字段的表,确保与 Python表的兼容性。

  • 使用 SQLAlchemy 编写参数化查询,该查询从SalesLT.CustomerLastName表中检索与提供的参数匹配的所有客户。

  • 更新现有的 Prisma 模型(schema.prisma),以定义一个包含idcustomer_idorder_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 绑定生成全堆栈应用。 执行以下步骤:

  1. 后端:Azure Functions(C#),SQL 绑定

    • 配置为 SQL BindingsSalesLT.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在本地运行和测试函数。
  2. 前端:Blazor WebAssembly (可选)

    • 创建一个使用 API 的Blazor WebAssembly前端。
    • 显示包含客户数据和表单的表以添加新客户。
    • 使用 HttpClient 调用 Azure Functions 终结点。
    • 实现双向数据绑定以动态处理表单输入。
    • 使用 BootstrapBlazor 组件设置样式和布局。

确保项目包括有关在本地运行 Azure Functions 后端和 Blazor WebAssembly 前端的安装说明,以及数据库连接的正确 .envlocal.settings.json 配置。

具有 Node.js 和 Next.js 的 Full-Stack

下面是 GitHub Copilot Chat 中提供的详细提示,用于生成完整的后端设置,包括 API 路由和数据库集成。

使用 Express 和 Node.js 生成一个连接到本地 SQL 数据库的 REST API。 将 Tedious 包用于 SQL Server 连接,将 Prisma 用作 ORM。 执行以下步骤:

  1. 后端:Node.js + Express

    • 使用PrismaTedious作为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 终结点。
  2. 前端:Next.js + TypeScript (可选)

    • 创建一个Next.js前端以使用 API。
    • 显示包含客户数据和表单的表以添加新客户。
    • 使用 React 钩子(useStateuseEffect)动态管理状态和提取数据。
    • 使用 Tailwind CSS. 设置 UI 样式。
    • 实现服务器端数据提取(getServerSideProps)在 Next.js 中以提高性能。

确保项目包含独立运行后端和前端的设置说明,以及数据库连接的正确 .env 配置。

后端:Django + Django REST 框架

下面是 GitHub Copilot Chat 中提供的详细提示,用于生成完整的后端设置,包括 API 路由和数据库集成。

使用DjangoSalesLT.Customer表搭建Django REST Framework的后端架构。 执行以下步骤:

  • 使用 Django 的 ModelViewSet 实现 API 路由,包含以下终结点:

    • GET /customers – 获取所有客户。
    • GET /customers/{id} – 按 ID 获取特定客户。
    • POST /customers - 创建新客户。
    • PUT /customers/{id} – 更新现有客户。
    • DELETE /customers/{id} – 删除客户。
  • 添加有关使用 python manage.py makemigrationsmigrate 生成数据库迁移的说明。

反馈:代码生成

为了帮助我们优化和改进 MSSQL 扩展的 GitHub Copilot,请使用以下 GitHub 问题模板提交反馈: GitHub Copilot 反馈

提交反馈时,请考虑包括:

  • 测试方案 – 告诉我们你关注哪些领域,例如架构创建、查询生成、安全性、本地化。

  • 效果良好 - 描述任何感觉流畅、有用或超出预期的体验。

  • 问题或漏洞 – 包括任何问题、不一致或令人困惑的行为。 屏幕截图或屏幕录制特别有用。

  • 改进建议 - 分享改进可用性、扩大覆盖范围或增强 GitHub Copilot 响应的想法。