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
Оригинал