Integrasi pemetaan objek-relasional dengan GitHub Copilot

GitHub Copilot dan ekstensi MSSQL bekerja dengan setiap kerangka kerja pemetaan relasional objek (ORM) utama untuk SQL Server dan Azure SQL Database. Referensi ini mencakup ORM yang didukung, apa yang dapat dilakukan masing-masing, dan contoh end-to-end yang membawa Anda dari tabel SQL Server ke model yang diketik, migrasi, dan metode akses data.

Kesimpulan utama

  • GitHub Copilot menghasilkan model, migrasi, dan kode akses data yang disesuaikan dengan ORM pilihan Anda.
  • Peserta@mssql obrolan membaca skema database Anda dan menggunakannya sebagai konteks saat membuat kode ORM.
  • Instruksi kustom dapat menegakkan konvensi di lapisan Transact-SQL (T-SQL) dan ORM.

Matriks dukungan ORM

ORM Tumpukan Models Migrations Skema pertama Pendekatan berbasis kode
Inti Kerangka Kerja Entitas .NET / C# Yes Yes Yes Yes
Prisma Node.js / TypeScript Yes Yes Yes Yes
Sekuel Node.js Yes Yes Yes Yes
SQLAlchemy Python Yes Ya (melalui Alembic) Yes Yes
Django ORM Python Yes Yes Yes Limited
JenisORM Node.js / TypeScript Yes Yes Yes Yes
Gerimis Node.js / TypeScript Yes Yes Yes Yes
Dapper .NET / C# Micro-ORM Manual Tidak. Yes

Skenario menyeluruh

Setiap bagian menggunakan skenario yang sama: Anda memiliki SalesLT.Customer di SQL Server dan ingin menambahkan email kolom, menghasilkan model yang diketik, dan menghasilkan metode akses data.

Inti Kerangka Kerja Entitas

1. Hasilkan model

@mssql Generate an Entity Framework Core entity class for
SalesLT.Customer. Use C# records where appropriate. Target
Entity Framework Core 9 with SQL Server provider.

2. Hasilkan migrasi

@mssql Generate an Entity Framework Core migration to add an
`Email` column (nvarchar(256), nullable) to the Customer entity.
Use the EF Core Add-Migration conventions and include both the
Up and Down methods.

3. Hasilkan metode akses data

@mssql Write a CustomerRepository method that returns all active
customers ordered by LastName. Use the DbContext pattern, async/await,
and return IReadOnlyList<Customer>.

Prisma

1. Hasilkan model skema

@mssql Generate a Prisma model for SalesLT.Customer using the
sqlserver provider. Use @map annotations to match the existing
column names. Set the primary key and unique constraints explicitly.

2. Hasilkan migrasi

@mssql Generate a Prisma migration SQL file to add an `email`
column (NVARCHAR(256), nullable) to the SalesLT.Customer table,
compatible with the sqlserver provider.

3. Hasilkan metode akses data

@mssql Write a TypeScript function that uses the Prisma client to
return all active customers ordered by last name, including strict
TypeScript types.

Sekuel

1. Hasilkan model

@mssql Generate a Sequelize model class for SalesLT.Customer using
the sequelize-typescript decorators pattern. Include data type
mappings for DATETIME2 and NVARCHAR columns.

2. Hasilkan migrasi

@mssql Generate a Sequelize migration in JavaScript to add an
`email` column (STRING(256), nullable) to the `Customer` table in
the `SalesLT` schema.

3. Hasilkan metode akses data

@mssql Write a Sequelize repository method using async/await that
returns all active customers ordered by LastName. Use model scopes
for the `active` filter.

SQLAlchemy

1. Hasilkan model

@mssql Generate a SQLAlchemy 2.0 model for SalesLT.Customer using
the declarative Mapped[] syntax. Use the pyodbc driver connection
string format for SQL Server.

2. Hasilkan migrasi Alembic

@mssql Generate an Alembic migration script to add an `email`
column (NVARCHAR(256), nullable) to the SalesLT.Customer table.
Include both upgrade and downgrade functions.

3. Hasilkan metode akses data

@mssql Write a SQLAlchemy 2.0 async repository method using
select() and scalars() that returns all active customers ordered
by last name.

Django ORM

1. Hasilkan model

@mssql Generate a Django model for SalesLT.Customer using
django-mssql-backend. Include Meta.db_table to map to the
existing table name with the SalesLT schema.

2. Hasilkan migrasi

@mssql Generate a Django migration to add an `email` field
(CharField, max_length=256, null=True) to the Customer model.
Use the AddField operation.

3. Hasilkan metode akses data

@mssql Write a Django queryset manager method that returns all
active customers ordered by last_name, using select_related for
any foreign key fields.

JenisORM

1. Hasilkan entitas

@mssql Generate a TypeORM entity class for SalesLT.Customer.
Use decorators for @Entity, @Column, @PrimaryGeneratedColumn.
Include DATETIME2 and NVARCHAR mappings for SQL Server.

2. Hasilkan migrasi

@mssql Generate a TypeORM migration class to add an `email`
column (nvarchar 256, nullable) to the SalesLT.Customer table.
Include both up and down methods.

3. Hasilkan metode akses data

@mssql Write a TypeORM repository method that uses the query
builder to return all active customers ordered by last name.
Include strict TypeScript types.

Gerimis

1. Hasilkan skema

@mssql Generate a Drizzle schema definition for SalesLT.Customer
using the mssql dialect. Include type-safe column mappings for
nvarchar, datetime2, and bit types.

2. Hasilkan migrasi

@mssql Generate a Drizzle migration SQL file to add an `email`
column (nvarchar 256, nullable) to the SalesLT.Customer table.

3. Hasilkan metode akses data

@mssql Write a Drizzle query using the query builder that returns
all active customers ordered by last name. Use type-safe column
references.

Dapper

Dapper adalah micro-ORM tanpa pembuatan skema atau dukungan migrasi, tetapi GitHub Copilot dapat menghasilkan metode akses data yang menggunakan metode ekstensi Dapper terhadap skema yang ada.

@mssql Write a Dapper-based repository method in C# that returns
all active customers ordered by LastName. Use parameterized
queries and a typed Customer record.

Pola dan peringatan umum

  • Entity Framework Core + kolase SQL Server. Untuk perbandingan peka huruf besar/kecil, atur EF.Functions.Collate kueri secara eksplisit. Jangan berasumsi kolasifikasi default cocok dengan pengaturan tingkat server SQL Server.
  • Kutipan string koneksi Prisma + MSSQL. String koneksi Azure SQL Database memerlukan pengkodean URL karakter khusus dalam kata sandi yang cermat. Lihat dokumen penyedia Prisma SQL Server.
  • SQLAlchemy + driver pyodbc. Instal dan referensikan versi driver yang benar (ODBC Driver 18 for SQL Server per 2026). Sematkan versi untuk requirements.txt menghindari kejutan.
  • Django ORM + pemetaan kunci primer. IDENTITYKolom memerlukan paket dan IDENTITY_INSERT penanganan django-mssql-backend untuk pemuatan data.
  • JenisORM + camelCase. Tetapkan entityPrefix dan gunakan strategi penamaan untuk menyelaraskan dengan instruksi kustom Anda jika tim Anda menggunakan konvensi tertentu.

Membagikan pengalaman Anda

Untuk membantu kami memperbaiki dan meningkatkan GitHub Copilot untuk ekstensi MSSQL, gunakan templat masalah GitHub berikut untuk mengirimkan umpan balik Anda: GitHub Copilot Feedback

Saat mengirimkan umpan balik, pertimbangkan untuk menyertakan:

  • Skenario yang diuji: Beri tahu kami area mana yang Anda fokuskan, misalnya, pembuatan skema, pembuatan kueri, keamanan, pelokalan.

  • Apa yang bekerja dengan baik: Jelaskan pengalaman apa pun yang terasa lancar, membantu, atau melebihi harapan Anda.

  • Masalah atau gangguan: Sertakan setiap masalah, inkonsistensi, atau perilaku yang membingungkan. Cuplikan layar atau rekaman layar sangat membantu.

  • Saran untuk perbaikan: Bagikan ide untuk meningkatkan kegunaan, memperluas cakupan, atau meningkatkan respons GitHub Copilot.