Aracılığıyla paylaş


Hızlı Başlangıç: İş mantığı açıklayıcısını kullanma

Bu hızlı başlangıçta, iş mantığı açıklayıcısının geliştiricilerin SQL, ORM (Object-Relational Eşleme) çerçevelerinde veya doğrudan veritabanında uygulanan karmaşık uygulama mantığını anlamasına ve bunlarla çalışmasına nasıl yardımcı olduğunu öğreneceksiniz. Yardımcı, temel alınan iş kurallarını açıklamak ve eyleme dönüştürülebilir belgeler sağlamak için SQL kodunu, ORM modellerini veya mevcut veritabanı şemalarını analiz eder.

Başlayın

Bir veritabanına bağlı olduğunuzdan ve MSSQL uzantısıyla etkin bir düzenleyici penceresinin açık olduğundan emin olun. Bu bağlantı, sohbet katılımcısının @mssql veritabanı ortamınızın bağlamını anlamasına olanak tanıyarak doğru ve bağlama duyarlı öneriler sağlar. Veritabanı bağlantısı olmadan, sohbet katılımcısının anlamlı yanıtlar sağlamak için şeması veya veri bağlamı olmaz.

Aşağıdaki örneklerde, AdventureWorksLT2022 giriş sayfasından indirebileceğiniz örnek veritabanı kullanılır.

En iyi sonuçları elde etmek için tablo ve şema adlarını kendi ortamınızla eşleşecek şekilde ayarlayın.

Sohbetin ön ekini içerdiğinden @mssql emin olun. Örneğin, @mssql yazdıktan sonra sorunuzu ya da isteminizi yazın. Bu, sohbet katılımcısının SQL ile ilgili yardım istediğinizi anlamasını sağlar.

GitHub Copilot ile iş mantığını anlama

GitHub Copilot, veritabanı koduna, ORM modellerine ve uygulama sorgularında eklenmiş iş kurallarını anlamanıza ve açıklamanıza yardımcı olabilir. GitHub Copilot, saklı yordamlardan LINQ sorgularına ve Sequelize ifadelerine kadar karmaşık mantığı daha erişilebilir hale getirmek için doğal dil içgörüleri sağlar.

Sohbet katılımcısı aracılığıyla sorabileceğiniz yaygın kullanım örnekleri ve örnekler aşağıda verilmiştir:

T-SQL mantığını açıklama

Saklı yordamlardan satır içi koşullu deyimlere kadar Transact-SQL (T-SQL) mantığını anlamak ve açıklamak için GitHub Copilot'ı kullanın. İndirim kurallarını, yordam mantığını veya iyileştirme koşullarını gözden geçirirken GitHub Copilot, T-SQL'de uygulanan iş kurallarını analiz edebilir ve belgeleyebilir.

Saklı yordamı açıklayın

Explain what the `SalesLT.uspGetCustomerOrderHistory` stored procedure does and suggest ways to optimize it.

Saklı yordamda hata ayıklama

Debug the `SalesLT.uspGetTopSellingProducts` stored procedure and suggest improvements.

Kod parçacığında iş mantığını açıklama

Analyze the following SQL code snippet from my current database. Document the business rules implemented in this discount application process, including conditions for eligibility, discount rate adjustments, and any limits imposed on the discount amount. Also, provide actionable insights or suggestions to improve clarity or performance if necessary.

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;

ORM mantığını açıklama

SQLAlchemy sorgusunu açıklama

Explain what the following SQLAlchemy query does:

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)
)

Entity Framework LINQ sorgusunu açıklama

What does this Entity Framework LINQ query do? Describe how it groups customers by tier based on their total purchases.

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"
    });

Prisma sorgusunda iş mantığını açıklama

Analyze the logic of this Prisma query and explain how it determines which products are considered "low inventory".

const lowInventoryProducts = await prisma.product.findMany({
  where: {
    SafetyStockLevel: {
      lt: 50
    }
  },
  select: {
    ProductID: true,
    Name: true,
    SafetyStockLevel: true
  }
});

Sequelize sorgusunu açıklama ve yorum ekleme

Review and explain what this Sequelize query does. Add inline comments to clarify how it calculates total revenue per customer and filters for customers with significant spending:

const results = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});

Ürün listesi için SQLAlchemy sorgusu oluşturma

Using SQLAlchemy, generate a query to list products that have never been ordered and ask GitHub Copilot to explain the join logic and filtering behavior.

Prisma sorgusu kullanarak müşteri bilgilerini alma

In Prisma, write a query that retrieves customers who placed an order in the last 30 days. Explain what the following Prisma query does. Add inline comments to clarify how the date filtering works and how recent orders are determined:

Sorgular aracılığıyla iş amacını anlama

GitHub Copilot, geliştiricilerin bir sorguyu nasıl çalıştığını değil neden var olduğunu anlamasına yardımcı olur. Bu açıklama veri filtreleri, gruplandırmalar ve toplamaların ardındaki gerçek dünya amacını içerir. Bu açıklamalar özellikle ekleme sırasında kullanışlıdır ve geliştiricilerin SQL ve ORM koduna eklenmiş raporların, mantıksal geçitlerin veya sistem ölçümlerinin ardındaki hedefleri kavramasına olanak sağlar.

T-SQL sorgusunda iş hedeflerini açıklama

Describe the business goal of the following SQL query. What insight is it trying to surface?

SELECT TOP 10 CustomerID,
              COUNT(*) AS OrderCount
FROM SalesLT.SalesOrderHeader
GROUP BY CustomerID
ORDER BY OrderCount DESC;

T-SQL sorgusunun amacını özetleme

Summarize what this query is intended to achieve from a business perspective.

SELECT ProductID,
       SUM(LineTotal) AS TotalSales
FROM SalesLT.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > 10000;

Saklı yordamda iş mantığını açıklayın

Analyze the `SalesLT.uspGetCustomerOrderHistory` stored procedure and describe the business logic it implements.

Entity Framework LINQ sorgusunda iş mantığını açıklama

Explain this Entity Framework LINQ query and describe what business logic it implements:

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();

Sırala sorgusunda iş varsayımlarını açıklama

Using Sequelize, explain what this query does and describe any business assumptions it makes:

const customerRevenue = await SalesOrderHeader.findAll({
  attributes: ['CustomerID', [sequelize.fn('SUM', sequelize.col('TotalDue')), 'TotalSpent']],
  group: ['CustomerID'],
  having: sequelize.literal('SUM(TotalDue) > 5000')
});

Deneyiminizi paylaşma

MSSQL uzantısı için GitHub Copilot'ı geliştirmemize ve geliştirmemize yardımcı olmak için aşağıdaki GitHub sorun şablonunu kullanarak geri bildiriminizi gönderin: GitHub Copilot Geri Bildirimi

Geri bildirim gönderirken şunları dahil etmeyi göz önünde bulundurun:

  • Test edilen senaryolar : Şema oluşturma, sorgu oluşturma, güvenlik, yerelleştirme gibi hangi alanlara odaklandığınız konusunda bize bilgi verin.

  • Neler iyi çalıştı - Sorunsuz geçen, yardımcı olan veya beklentilerinizi aşan deneyimleri açıklayın.

  • Sorunlar veya hatalar : Tüm sorunları, tutarsızlıkları veya kafa karıştırıcı davranışları içerir. Ekran görüntüleri veya ekran kayıtları özellikle yararlıdır.

  • İyileştirme önerileri : Kullanılabilirliği artırma, kapsamı genişletme veya GitHub Copilot'un yanıtlarını geliştirmeyle ilgili fikirleri paylaşın.