이 빠른 시작에서는 GitHub Copilot가 Visual Studio Code 내에서 직접 컨텍스트 인식 코드를 생성하여 SQL 및 ORM 개발을 가속화하는 방법을 알아봅니다. T-SQL을 사용하든 Entity Framework, Sequelize, Prisma 또는 SQLAlchemy와 같은 ORM을 사용하든, GitHub Copilot는 테이블을 스캐폴드하고, 스키마를 발전시키고, 반복적인 스크립팅을 줄여 애플리케이션 논리 빌드에 집중할 수 있도록 도와줍니다.
시작하기
데이터베이스에 연결되어 있고 MSSQL 확장으로 활성 편집기 창이 열려 있는지 확인합니다. 이 연결을 사용하면 채팅 참가자가 @mssql
데이터베이스 환경의 컨텍스트를 이해할 수 있으므로 정확하고 컨텍스트 인식 제안을 사용할 수 있습니다. 데이터베이스 연결이 없으면 채팅 참가자는 의미 있는 응답을 제공하는 스키마 또는 데이터 컨텍스트가 없습니다.
다음 예제에서는 AdventureWorksLT2022
홈페이지에서 다운로드할 수 있는 샘플 데이터베이스를 사용합니다.
최상의 결과를 위해 사용자 고유의 환경에 맞게 테이블 및 스키마 이름을 조정합니다.
@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(
email
JavaScript) 모델을 생성하여varchar(256)
테이블에SalesLT.Customer
열을 추가합니다.C#에서 Entity Framework 모델 클래스를 생성하여 ,
SalesLT.ProductModel
및id
열이 있는name
description
테이블을 나타냅니다.기존
SalesLT.Product
테이블을 기반으로 C#에서 Entity Framework 모델을 생성합니다.SQLAlchemy 코드를 작성하여
SalesLT.OrderDetails
테이블과id
,order_date
,customer_id
필드를 정의하고,Python
와의 호환성을 보장합니다.SQLAlchemy를 사용하여
SalesLT.Customer
테이블에서 제공된 매개 변수와 일치하는LastName
의 모든 고객을 검색하는 매개변수화된 쿼리를 작성합니다.기존 Prisma 모델(schema.prisma)을 업데이트하여
SalesLT.Order
이라는 새 모델을id
,customer_id
, 및order_date
필드로 정의합니다.열 및 데이터 형식을 포함하여 테이블에 대한
SalesLT.Product
SQLAlchemy 모델 클래스를 생성합니다.
기본 앱 코드 생성
또한 GitHub Copilot는 SQL 데이터베이스와 상호 작용하는 백 엔드 및 프런트 엔드 구성 요소를 스캐폴드하는 데 도움이 될 수 있습니다. 다음 예제에서는 Azure Functions, Node.js, Django 및 Next.js같은 인기 있는 스택을 사용하여 스키마에서 작업 애플리케이션 코드로 이동하는 방법을 보여 줍니다.
서버리스 백 엔드 SQL 바인딩 및 Blazor
다음 예제에서는 GitHub Copilot Chat과 함께 엔드투엔드 솔루션을 스캐폴드하는 데 사용할 수 있는 전체 프롬프트를 보여 줍니다. 이러한 프롬프트에는 Copilot가 백 엔드 및 프런트 엔드 계층 모두에서 정확하고 구조화된 코드를 생성하는 데 도움이 되는 자세한 지침과 컨텍스트가 포함됩니다.
Functions 및 Blazor WebAssembly용 Azure SQL 바인딩을 사용하여 전체 스택 앱을 생성합니다. 아래 단계를 수행하세요.
백 엔드: SQL 바인딩이 있는 Azure Functions(C#)
-
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
포함되어 있는지 확인합니다.
Full-Stack을(를) Node.js 및 Next.js와 함께
다음은 GitHub Copilot Chat에서 API 경로 및 데이터베이스 통합을 포함하여 전체 백 엔드 설정을 생성하기 위해 제공할 수 있는 자세한 프롬프트입니다.
Express에서 Node.js 사용하여 로컬 SQL Database에 연결하는 REST API를 생성합니다. SQL Server 연결에 Tedious 패키지를 사용하고 Prisma를 ORM으로 사용합니다. 아래 단계를 수행하세요.
백 엔드: Node.js + Express
- 서버 드라이버로
Prisma
사용하여Tedious
SQL
데이터베이스 연결을 설정합니다. - 다음 엔드포인트를 사용하여
SalesLT.Customer
API 경로를 구현합니다.-
GET /customers
– 모든 고객을 가져옵니다. -
GET /customers/:id
– ID로 특정 고객을 가져옵니다. -
POST /customers
– 새 고객을 만듭니다. -
PUT /customers/:id
– 기존 고객을 업데이트합니다. -
DELETE /customers/:id
– 고객을 삭제합니다.
-
-
Prisma
를 사용하여SalesLT.Customer
테이블을 매핑하고,prisma migrate dev
을 이용해 데이터베이스 마이그레이션을 생성하도록 구성합니다. - 환경 변수(데이터베이스 자격 증명, 포트 등)에 사용합니다
dotenv
. - API 엔드포인트 테스트를 위해 추가
Jest
합니다.
- 서버 드라이버로
프런트 엔드: Next.js + TypeScript(선택 사항)
- API를
Next.js
사용하는 프런트 엔드를 만듭니다. - 고객 데이터와 양식이 포함된 테이블을 표시하여 새 고객을 추가합니다.
- 후크(
React
,useState
)를 사용하여useEffect
상태를 관리하고 데이터를 동적으로 가져옵니다. - 를 사용하여 UI 스타일을 지정합니다
Tailwind CSS
. - 성능 향상을 위해
getServerSideProps
에서 서버 쪽 데이터 페치(Next.js
)를 구현합니다.
- API를
프로젝트에 데이터베이스 연결에 대한 적절한 .env
구성을 사용하여 백 엔드와 프런트 엔드를 독립적으로 실행하기 위한 설정 지침이 포함되어 있는지 확인합니다.
백 엔드: Django + Django REST 프레임워크
다음은 GitHub Copilot Chat에서 API 경로 및 데이터베이스 통합을 포함하여 전체 백 엔드 설정을 생성하기 위해 제공할 수 있는 자세한 프롬프트입니다.
Django
테이블을 위한 Django REST Framework
백엔드를 SalesLT.Customer
로 스캐폴드합니다. 아래 단계를 수행하세요.
다음 엔드포인트에서 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의 응답 향상을 위한 아이디어를 공유합니다.
관련 콘텐츠
- Visual Studio Code용 MSSQL 확장용 GitHub Copilot
- 빠른 시작: 채팅 및 인라인 GitHub Copilot 제안 사용(미리 보기)
- 빠른 시작: 스키마 탐색기 및 디자이너 사용(미리 보기)
- 빠른 시작: 스마트 쿼리 작성기 사용(미리 보기)
- 빠른 시작: 쿼리 최적화 도우미(미리 보기)
- 빠른 시작: 비즈니스 논리 설명자 사용(미리 보기)
- 빠른 시작: Security Analyzer(미리 보기)
- 빠른 시작: 지역화 및 서식 도우미(미리 보기)
- 빠른 시작: 테스트 및 모의를 위한 데이터 생성(미리 보기)
- 제한 사항 및 알려진 문제