Integrazioni di mappatura oggetto-relazionale con GitHub Copilot

GitHub Copilot e l'estensione MSSQL funzionano con ogni principale framework di mappatura ogget-relazionale (ORM) per SQL Server e database SQL di Azure. Questo riferimento copre gli ORM supportati, cosa ciascuno può fare e un esempio end-to-end che ti porta da una tabella SQL Server a un modello tipizzato, a una migrazione e a un metodo di accesso ai dati.

Messaggi chiave:

  • GitHub Copilot genera modelli, migrazioni e codice di accesso ai dati personalizzati per l'ORM scelto.
  • Il @mssql partecipante alla chat legge lo schema del tuo database e lo usa come contesto per generare codice ORM.
  • Le istruzioni personalizzate possono imporre convenzioni sia tra i livelli Transact-SQL (T-SQL) che ORM.

Matrice di supporto ORM

ORM Stack Models Migrations Schema-prima Tecnologia incentrata sul codice
Entity Framework Core .NET/C#
Prisma Node.js/TypeScript
Sequel Node.js
SQLAlchemy Python Sì (tramite Alembic)
Django ORM Python Limited
TypeORM Node.js/TypeScript
Pioggerellina Node.js/TypeScript
Dapper .NET/C# Micro-ORM Manual NO

Scenario end-to-end

Ogni sezione utilizza lo stesso scenario: hai SalesLT.Customer SQL Server e vuoi aggiungere una email colonna, generare un modello tipizzato e produrre un metodo di accesso ai dati.

Entity Framework Core (un framework ORM per la gestione dei database nello sviluppo software)

1. Generare il modello

@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. Generare la migrazione

@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. Generare il metodo di accesso ai dati

@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. Generare il modello di schema

@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. Generare la migrazione

@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. Generare il metodo di accesso ai dati

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

Sequel

1. Generare il modello

@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. Generare la migrazione

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

3. Generare il metodo di accesso ai dati

@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. Generare il modello

@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. Generare la migrazione 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. Generare il metodo di accesso ai dati

@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. Generare il modello

@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. Generare la migrazione

@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. Generare il metodo di accesso ai dati

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

TypeORM

1. Generare l'entità

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

2. Generare la migrazione

@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. Generare il metodo di accesso ai dati

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

Pioggerellina

1. Generare lo schema

@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. Generare la migrazione

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

3. Generare il metodo di accesso ai dati

@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 è un micro-ORM senza supporto per la generazione o migrazione di schemi, ma GitHub Copilot può generare metodi di accesso ai dati che utilizzano i metodi di estensione di Dapper su uno schema esistente.

@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.

Modelli comuni e avvertenze

  • Entity Framework Core + collazione SQL Server. Per i confronti con la sensibilità a case e minuscoli, imposta EF.Functions.Collate esplicitamente nelle query. Non dare per scontato che la collation predefinita corrisponda all'impostazione a livello di server di SQL Server.
  • Primagem + citazione stringa di connessione MSSQL. Le stringhe di connessione di database SQL di Azure richiedono una codifica URL accurata di caratteri speciali nelle password. Consulta la documentazione del provider Prisma SQL Server.
  • SQLAlchemy + driver pyodbc. Installa e consulta la versione corretta del driver (ODBC Driver 18 for SQL Server al 2026). Fissa le versioni requirements.txt per evitare sorprese.
  • Django ORM + mappatura dei tasti principali. IDENTITY le colonne richiedono il django-mssql-backend pacchetto e IDENTITY_INSERT la gestione per i carichi dati.
  • TypeORM + camelCase. Imposta entityPrefix e usa strategie di denominazione in linea con le tue istruzioni personalizzate se il tuo team usa una convenzione specifica.

Condividere la propria esperienza

Per ottimizzare e migliorare GitHub Copilot per l'estensione MSSQL, usare il modello di problema GitHub seguente per inviare commenti e suggerimenti: Commenti e suggerimenti su GitHub Copilot

Quando si inviano commenti e suggerimenti, è consigliabile includere:

  • Scenari testati: segnalare le aree su cui ci si è concentrati, ad esempio la creazione dello schema, la generazione di query, la sicurezza, la localizzazione.

  • Cosa ha funzionato bene: descrivere tutte le esperienze che si sono sentite fluide, utili o superate le aspettative.

  • Problemi o bug: includere eventuali problemi, incoerenze o comportamenti confusi. Screenshot o registrazioni dello schermo sono particolarmente utili.

  • Suggerimenti per il miglioramento: condividere idee per migliorare l'usabilità, espandere la copertura o migliorare le risposte di GitHub Copilot.