Object-relationele mapping-integraties met GitHub Copilot

GitHub Copilot en de MSSQL-extensie werken met elk belangrijk object-relationeel mapping (ORM) framework voor SQL Server en Azure SQL Database. Deze referentie behandelt de ondersteunde ORM's, wat elk kan doen, en een end-to-end voorbeeld dat je van een SQL Server-tabel naar een getypeerd model, migratie en data-toegangsmethode brengt.

Belangrijke punten

  • GitHub Copilot genereert modellen, migraties en datatoegangscode die zijn afgestemd op jouw gekozen ORM.
  • De @mssql chatdeelnemer leest je databaseschema en gebruikt het als context bij het genereren van ORM-code.
  • Aangepaste instructies kunnen conventies afdwingen over zowel Transact-SQL (T-SQL) als ORM-lagen.

ORM-ondersteuningsmatrix

ORM Stack Models Migrations Schema-eerst Eerst coderen
Entity Framework Core .NET/C# Ja Ja Ja Ja
Prisma Node.js / TypeScript Ja Ja Ja Ja
Sequelize Node.js Ja Ja Ja Ja
SQLAlchemy Python Ja Ja (via Alembic) Ja Ja
Django ORM Python Ja Ja Ja Limited
TypeORM Node.js / TypeScript Ja Ja Ja Ja
Motregen Node.js / TypeScript Ja Ja Ja Ja
Dapper .NET/C# Micro-ORM Manual No Ja

End-to-end scenario

Elke sectie gebruikt hetzelfde scenario: je hebt SalesLT.Customer een SQL Server en wilt een email kolom toevoegen, een getypeerd model genereren en een data-toegangsmethode ontwikkelen.

Entity Framework Core

1. Genereer het 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. Genereer de migratie

@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. Genereer de data-toegangsmethode

@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. Genereer het schemamodel

@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. Genereer de migratie

@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. Genereer de data-toegangsmethode

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

Sequelize

1. Genereer het 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. Genereer de migratie

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

3. Genereer de data-toegangsmethode

@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. Genereer het 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. Genereer de Alembic-migratie

@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. Genereer de data-toegangsmethode

@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. Genereer het 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. Genereer de migratie

@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. Genereer de data-toegangsmethode

@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. Genereer de entiteit

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

2. Genereer de migratie

@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. Genereer de data-toegangsmethode

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

Motregen

1. Genereer het 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. Genereer de migratie

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

3. Genereer de data-toegangsmethode

@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 is een micro-ORM zonder ondersteuning voor schemageneratie of migratie, maar GitHub Copilot kan data-toegangsmethoden genereren die Dapper's extensiemethoden gebruiken tegen een bestaand schema.

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

Veelvoorkomende patronen en kanttekeningen

  • Entity Framework Core + SQL Server-verzameling. Voor hoofdlettergevoelige vergelijkingen, expliciet ingesteld EF.Functions.Collate in zoekopdrachten. Ga er niet van uit dat de standaardcollatie overeenkomt met de serverniveau-instelling van SQL Server.
  • Prisma + MSSQL verbindingsreeks quotering. Azure SQL Database-verbindingsstrings vereisen zorgvuldige URL-codering van speciale tekens in wachtwoorden. Bekijk de documentatie van de Prisma SQL Server-provider.
  • SQLAlchemy + pyodbc driver. Installeer en raadpleeg de juiste driverversie (ODBC Driver 18 for SQL Server vanaf 2026). Zet versies in requirements.txt om verrassingen te voorkomen.
  • Django ORM + primaire sleutel mapping. IDENTITY kolommen vereisen het django-mssql-backend pakket en IDENTITY_INSERT de verwerking van dataloads.
  • TypeORM + camelCase. Stel entityPrefix en gebruik naamgevingsstrategieën zodat ze aansluiten bij je aangepaste instructies als je team een specifieke conventie gebruikt.

Uw ervaring delen

Om ons te helpen GitHub Copilot voor de MSSQL-extensie te verfijnen en te verbeteren, gebruikt u de volgende GitHub-probleemsjabloon om uw feedback te verzenden: GitHub Copilot-feedback

Overweeg het volgende bij het indienen van feedback:

  • Geteste scenario's: Laat ons weten op welke gebieden u zich richt, bijvoorbeeld het maken van schema's, het genereren van query's, beveiliging, lokalisatie.

  • Wat goed werkte: Beschrijf alle ervaringen die soepel verliepen, behulpzaam waren of uw verwachtingen overtroffen.

  • Problemen of bugs: neem eventuele problemen, inconsistenties of verwarrend gedrag op. Schermafbeeldingen of schermopnamen zijn vooral nuttig.

  • Suggesties voor verbetering: Deel ideeën voor het verbeteren van bruikbaarheid, het uitbreiden van de dekking of het verbeteren van de reacties van GitHub Copilot.