Freigeben über


Schnellstart: Verwenden des Business Logic Explainer (Vorschau)

In dieser Schnellstartanleitung erfahren Sie, wie Der Geschäftslogik-Explainer Entwicklern hilft, komplexe Anwendungslogik zu verstehen und zu arbeiten, die in SQL-, ORM- (Object-Relational Mapping)-Frameworks oder direkt in der Datenbank implementiert ist. Der Assistent analysiert SQL-Code, ORM-Modelle oder vorhandene Datenbankschemas, um die zugrunde liegenden Geschäftsregeln zu erläutern und umsetzbare Dokumentation bereitzustellen.

Loslegen

Stellen Sie sicher, dass Sie mit einer Datenbank verbunden sind und ein aktives Editorfenster mit der MSSQL-Erweiterung geöffnet ist. Diese Verbindung ermöglicht es dem @mssql Chatteilnehmer, den Kontext Ihrer Datenbankumgebung zu verstehen und präzise und kontextbezogene Vorschläge zu ermöglichen. Ohne Datenbankverbindung verfügt der Chatteilnehmer nicht über das Schema oder den Datenkontext, um aussagekräftige Antworten bereitzustellen.

In den folgenden Beispielen wird die AdventureWorksLT2022 Beispieldatenbank verwendet, die Sie auf der Startseite von Microsoft SQL Server-Beispielen und Communityprojekten herunterladen können.

Um optimale Ergebnisse zu erzielen, passen Sie Tabellen- und Schemanamen an Ihre eigene Umgebung an.

Stellen Sie sicher, dass der Chat das @mssql Präfix enthält. Geben Sie @mssql z. B. gefolgt von Ihrer Frage oder Aufforderung ein. Dadurch wird sichergestellt, dass der Chatteilnehmer versteht, dass Sie sql-bezogene Unterstützung anfordern.

Grundlegendes zur Geschäftslogik mit GitHub Copilot

GitHub Copilot kann Ihnen helfen, Geschäftsregeln zu verstehen und zu erläutern, die in Datenbankcode, ORM-Modelle und Anwendungsabfragen eingebettet sind. Von gespeicherten Prozeduren bis hin zu LINQ-Abfragen und Sequelize-Ausdrücken bietet GitHub Copilot Einblicke in natürliche Sprachen, um komplexe Logik barrierefreier zu machen.

Nachfolgend finden Sie häufige Anwendungsfälle und Beispiele dafür, was Sie über den Chatteilnehmer fragen können:

Erläutern der T-SQL-Logik

Verwenden Sie GitHub Copilot, um T-SQL-Logik von gespeicherten Prozeduren bis hin zu inlinebedingten Anweisungen zu verstehen und zu erläutern. Unabhängig davon, ob Sie Rabattregeln, Verfahrenslogik oder Optimierungsbedingungen überprüfen, kann GitHub Copilot Geschäftsregeln analysieren und dokumentieren, die in T-SQL implementiert sind.

  • Erläutern Sie, was die SalesLT.uspGetCustomerOrderHistory gespeicherte Prozedur tut, und schlagen Sie Möglichkeiten zur Optimierung vor.
  • Debuggen Sie die SalesLT.uspGetTopSellingProducts gespeicherte Prozedur, und schlagen Sie Verbesserungen vor.
  • Analysieren Sie den folgenden SQL Codeausschnitt aus meiner aktuellen Datenbank. Dokumentieren Sie die in diesem Rabattanwendungsprozess implementierten Geschäftsregeln, einschließlich der Bedingungen für die Berechtigung, der Abzinsungsanpassungen und etwaigen Grenzwerten, die für den Rabattbetrag gelten. Stellen Sie bei Bedarf auch umsetzbare Einblicke oder Vorschläge bereit, um Klarheit oder Leistung zu verbessern.
DECLARE @OrderTotal AS DECIMAL (10, 2) = 1500.00;
DECLARE @DiscountCode AS NVARCHAR (20) = 'DISCOUNT10';
DECLARE @DiscountPct AS DECIMAL (5, 2) = CASE WHEN @OrderTotal > 1000.00 THEN 5.0 ELSE 0.0 END;

IF @DiscountCode = 'DISCOUNT10'
    BEGIN
        SET @DiscountPct = CASE WHEN @DiscountPct < 10.0 THEN 10.0 ELSE @DiscountPct END;
    END

DECLARE @DiscountAmount AS DECIMAL (10, 2) = (@OrderTotal * @DiscountPct / 100.0);

IF @DiscountAmount > 200.00
    BEGIN
        SET @DiscountAmount = 200.00;
    END

SELECT @OrderTotal AS OrderTotal,
       @DiscountPct AS DiscountPercentage,
       @DiscountAmount AS DiscountAmount;

Erläutern der ORM-Logik

  • Erläutern, was die folgende SQLAlchemy-Abfrage bewirkt:
from sqlalchemy import func

top_customers = (
    session.query(SalesOrderHeader.CustomerID, func.count().label("OrderCount"))
    .group_by(SalesOrderHeader.CustomerID)
    .order_by(func.count().desc())
    .limit(10)
)
  • Was geschieht mit dieser LINQ-Abfrage von Entity Framework? Beschreiben Sie, wie kunden basierend auf ihren Gesamtkäufen nach Ebene gruppiert werden.
var customerTiers = context.SalesOrderHeaders
    .GroupBy(o => o.CustomerID)
    .Select(g => new {
        CustomerID = g.Key,
        TotalSpent = g.Sum(o => o.TotalDue),
        Tier = g.Sum(o => o.TotalDue) >= 10000 ? "Gold" :
               g.Sum(o => o.TotalDue) >= 5000 ? "Silver" : "Bronze"
    });
  • Analysieren Sie die Logik dieser Prisma-Abfrage, und erläutern Sie, wie sie bestimmt, welche Produkte als "geringer Bestand" betrachtet werden.
const lowInventoryProducts = await prisma.product.findMany({
  where: {
    SafetyStockLevel: {
      lt: 50
    }
  },
  select: {
    ProductID: true,
    Name: true,
    SafetyStockLevel: true
  }
});
  • Überprüfen und erläutern Sie, was diese Sequelize-Abfrage tut. Fügen Sie Inlinekommentare hinzu, um zu verdeutlichen, wie der Gesamtumsatz pro Kunde berechnet und für Kunden mit erheblichen Ausgaben gefiltert wird:
const results = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});
  • Generieren Sie mithilfe von SQLAlchemy eine Abfrage zum Auflisten von Produkten, die noch nie sortiert wurden, und bitten Sie GitHub Copilot, die Verknüpfungslogik und das Filterverhalten zu erläutern.

  • Schreiben Sie in Prisma eine Abfrage, die Kunden abruft, die in den letzten 30 Tagen eine Bestellung aufgegeben haben. Erläutern, was die folgende Prisma-Abfrage bewirkt. Fügen Sie Inlinekommentare hinzu, um zu erklären, wie die Datumsfilterung funktioniert und wie neueste Bestellungen bestimmt werden.

Geschäftsabsichten durch Abfragen verstehen

GitHub Copilot hilft Entwicklern nicht nur zu verstehen, wie eine Abfrage funktioniert, sondern warum sie vorhanden ist. Dies umfasst den realen Zweck hinter Datenfiltern, Gruppierungen und Aggregationen. Diese Erklärungen sind besonders nützlich beim Onboarding, sodass Entwickler die Ziele hinter Berichten, Logikgaten oder Systemmetriken erfassen können, die in SQL- und ORM-Code eingebettet sind.

  • Beschreiben Sie das Geschäftsziel der folgenden SQL-Abfrage. Welche Erkenntnis versucht es zutage zu fördern?
SELECT TOP 10 CustomerID,
              COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader
GROUP BY CustomerID
ORDER BY OrderCount DESC;
  • Fassen Sie zusammen, was diese Abfrage aus geschäftlicher Sicht erreichen soll.
SELECT ProductID,
       SUM(LineTotal) AS TotalSales
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > 10000;
  • Analysieren Sie die SalesLT.uspGetCustomerOrderHistory gespeicherte Prozedur, und beschreiben Sie die von ihr implementierte Geschäftslogik.

  • Erläutern Sie diese LINQ-Abfrage von Entity Framework, und beschreiben Sie, welche Geschäftslogik implementiert wird:

var highValueCustomers = context.SalesOrderHeaders
    .Where(o => o.TotalDue > 1000)
    .GroupBy(o => o.CustomerID)
    .Select(g => new { CustomerID = g.Key, OrderCount = g.Count() })
    .OrderByDescending(x => x.OrderCount)
    .Take(10)
    .ToList();
  • Erläutern Sie, Sequelizewas diese Abfrage tut, und beschreiben Sie alle Geschäftsannahmen, die sie macht:
const customerRevenue = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});

Rückmeldung: Erklärung der Geschäftslogik

Um uns dabei zu helfen, GitHub Copilot für die MSSQL-Erweiterung zu verfeinern und zu verbessern, verwenden Sie die folgende GitHub-Problemvorlage, um Ihr Feedback zu übermitteln: GitHub Copilot Feedback

Berücksichtigen Sie bei der Übermittlung von Feedback Folgendes:

  • Getestete Szenarien – Teilen Sie uns mit, auf welche Bereiche Sie sich konzentrieren, z. B. Schemaerstellung, Abfragegenerierung, Sicherheit, Lokalisierung.

  • Was gut funktioniert hat – Beschreiben Sie alle Erfahrungen, die sich reibungslos, hilfreich fühlen oder Ihre Erwartungen überschritten haben.

  • Probleme oder Fehler – Schließen Sie alle Probleme, Inkonsistenzen oder verwirrende Verhaltensweisen ein. Screenshots oder Bildschirmaufzeichnungen sind besonders hilfreich.

  • Verbesserungsvorschläge – Teilen Sie Ideen zur Verbesserung der Benutzerfreundlichkeit, zur Erweiterung der Abdeckung oder zur Verbesserung der Antworten von GitHub Copilot.