10-дневный .Net Aspire Challenge - День 2: Добавление компонента MSSQL

10-дневный .Net Aspire Challenge - День 2: Добавление компонента MSSQL

3 сентября 2024 г.

Пошаговое руководство по использованию компонента .Net Aspire MSSQL в Visual Studio.

Введение

.Net Aspire Framework используется для разработки облачных и готовых к производству распределенных приложений. Он состоит из компонентов для обработки облачных задач, таких как Redis, Postgres и т. д.

Предпосылки

  • Установить.Net 8

  • УстановитьVisual Studio 2022версия 17 или выше

  • Рабочая нагрузка .Net Aspire

  • Среда выполнения контейнера, напримерРабочий стол Docker

    10-дневный челлендж .Net AspireИзменить описаниеsinghsukhpinder.medium.com

Цели

Узнайте, как создать начальный проект с использованием .Net Aspire с компонентом MSSQL EF Core.

Образец Github: Структура решения разделена на следующие проекты

  • DotnetAspireChallenge.ApiService
  • DotnetAspireChallenge.AppHost
  • DotnetAspireChallenge.ServiceDefaults
  • DotnetAspireChallenge.Web

Начиная

Шаг 1: Установите следующий пакет NuGet

Установите следующий пакет Nuget в последующий проект «DotnetAspireChallenge.AppHost

dotnet add package Aspire.Hosting.SqlServer

В приведенном выше проекте зарегистрируйте базу данных SQL-сервера и настройте SQL-соединение, используя следующий код.

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("sqldata");

var apiService = builder.AddProject<Projects.DotnetAspireChallenge_ApiService>("apiservice")
    .WithReference(sql);

Шаг 2: Установите еще один пакет NuGet

Установите следующий пакет Nuget в последующий проект «DotnetAspireChallenge.ApiService

dotnet add package Aspire.Microsoft.EntityFrameworkCore.SqlServer

затем зарегистрируйте контекст в файле Program.cs следующим образом

builder.AddSqlServerDbContext<MssqlDbContext>("sqldata");

Шаг 3: Создайте класс «Клиент»

public class Customer
{
    public int Id { get; set; }
    
    [Required]
    public string Title { get; set; } = string.Empty;
    
    [Required]
    public string Description { get; set; } = string.Empty;
}

Шаг 4: Создайте класс расширения

Создайте класс расширения и зарегистрируйте минимальный метод API get для демонстрации использования контекста MSSQL в API Service.

public static class AspireMssqlExtension
{
    public static void MapMssqlAspireEndpoint(this WebApplication app)
    {
        app.MapGet("/mssql", async (MssqlDbContext mssqlDbContext) =>
        {
            await mssqlDbContext.Customers.AddAsync(new Customer()
            {
                Title = "test@gmail.com",
                Description = "sukh"
            });
            int rows = await mssqlDbContext.SaveChangesAsync();
            if (rows > 0)
            {
                return await mssqlDbContext.Customers.FirstOrDefaultAsync();
            }
            else
            {
                return null;
            }
        });
    }
}

internal class MssqlDbContext(DbContextOptions options) : DbContext(options)
{
    public DbSet<Customer> Customers => Set<Customer>();
}

и наконец, зарегистрируйтесь в файле Program.cs

app.MapMssqlAspireEndpoint();

Шаг 5: Нажмите конечную точку GET

Наконец, перейдите к URL-адресу GET, показанному ниже, в вашем браузере. Он вставит указанного клиента в базу данных MSSQL, извлечет последнюю вставленную строку и отобразит ее в качестве ответа.

Добавьте дополнительные свойства строки подключения, используя синтаксис JSON

{
  "Aspire": {
    "Microsoft": {
      "EntityFrameworkCore": {
          "SqlServer": {
            "ConnectionString": "YOUR_CONNECTIONSTRING",
            "DbContextPooling": true,
            "DisableHealthChecks": true,
            "DisableTracing": true,
            "DisableMetrics": false,
          "AnotherDbContext": {
            "ConnectionString": "AnotherDbContext_CONNECTIONSTRING",
            "DisableTracing": false
          }
        }
      }
    }
  }
}

Поздравляем!..!! Вы успешно интегрировали компонент MSSQL в проект .Net Aspire.

Проект Github

GitHub — ssukhpinder/DotnetAspireChallenge: 10-дневный вызов .Net Aspire Challenge


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE