Как работать с входом в систему в EF Core 7

автор red


Entity Framework Core (EF Core) — это современное средство сопоставления объектных баз данных с открытым исходным кодом, которое упрощает доступ к данным для приложений .NET. EF Core позволяет работать с данными из различных источников, включая реляционные и нереляционные базы данных и даже данные в памяти.

EF Core позволяет писать код для выполнения действий CRUD (создание, чтение, обновление и удаление), не понимая, как данные сохраняются в базовой базе данных. Используя EF Core, вы можете извлекать сущности из хранилища данных, добавлять, изменять или удалять сущности, а также просматривать графики сущностей.

Другими словами, EF Core упрощает доступ к данным, позволяя писать код, выполняющий эти операции CRUD с использованием объектов .NET, без прямого взаимодействия с базовым поставщиком базы данных. В этой статье рассказывается о том, как можно использовать Entity Framework Core для регистрации активности базы данных при работе в приложениях ASP.NET Core 7.

Для работы с примерами кода, представленными в этой статье, в вашей системе должна быть установлена ​​предварительная версия Visual Studio 2022. Если у вас еще нет копии, вы можете загрузить предварительную версию Visual Studio 2022 здесь.

Создайте минимальный проект веб-API ASP.NET Core в предварительной версии Visual Studio 2022.

Прежде всего давайте создадим проект ASP.NET Core в Visual Studio 2022. Выполнение этих шагов позволит создать новый проект ASP.NET Core Web API 6 в Visual Studio 2022:

  1. Запустите IDE Visual Studio 2022 Preview.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» выберите «ASP.NET Core Web API» из списка отображаемых шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и расположение нового проекта.
  6. При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
  7. Нажмите “Далее.
  8. В следующем окне «Дополнительная информация» выберите .NET 7.0 (предварительная версия) в качестве версии платформы, которую вы хотите использовать.
  9. Затем снимите флажок «Использовать контроллеры…», поскольку в этом примере мы будем использовать минимальные API. Оставьте для параметра «Тип аутентификации» значение «Нет» (по умолчанию).
  10. Убедитесь, что флажки «Включить Docker», «Настроить HTTPS» и «Включить поддержку Open API» сняты, поскольку мы не будем здесь использовать ни одну из этих функций.
  11. Щелкните Создать.

В результате будет создан новый проект веб-API ASP.NET Core 7 в Visual Studio 2022. Мы будем использовать этот проект для иллюстрации входа в систему EF Core 7 в последующих разделах этой статьи.

Параметры ведения журнала в Entity Framework Core

В Entity Framework Core ведение журнала используется для отслеживания запросов к базе данных и других операций. Entity Framework Core использует платформу Microsoft.Extensions.Logging для регистрации событий. Эта платформа предоставляет широкий выбор поставщиков журналов, которые можно использовать для записи сообщений журнала.

По умолчанию Entity Framework Core записывает сообщения журнала на консоль. Помимо использования платформы Microsoft.Extensions.Logging, Entity Framework Core также поддерживает сторонние платформы ведения журналов, такие как NLog и Serilog. Эти платформы можно использовать для записи сообщений журнала в файлы, базы данных или другие места назначения.

Если вы собираетесь использовать EF Core и SQL Server в своем приложении, вам потребуется добавить в проект пакет Microsoft.EntityFrameworkCore.SqlServer NuGet. Выберите проект в обозревателе решений, затем щелкните правой кнопкой мыши и выберите «Управление пакетами NuGet». В диспетчере пакетов NuGet найдите Microsoft.EntityFrameworkCore.SqlServer и установите пакет.

Кроме того, вы можете установить пакет через консоль диспетчера пакетов NuGet, введя команду, показанную ниже.

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer

Создайте класс Customer в .NET Core.

Создайте класс с именем Customer в одноименном файле с расширением «.cs» и напишите туда следующий код:

 
public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; } = string.Empty;
    public string LastName { get; set; } = string.Empty;
}

Настройка ведения журнала в Entity Framework Core

Вы можете воспользоваться входом в Entity Framework Core одним из двух способов:

  • Используйте метод расширения UseLoggerFactory.
  • Используйте интерфейс ILoggerProvider.

Метод расширения UseLoggerFactory — это рекомендуемый способ настройки ведения журнала в EF Core, поскольку он обеспечивает более гибкую настройку. Чтобы использовать метод расширения UseLoggerFactory, просто добавьте его в свой класс DbContext, как показано во фрагменте кода, приведенном ниже.

 
using Microsoft.Extensions.Logging;
public class MyDbContext : DbContext
{
   public MyDbContext(DbContextOptions options)
        : base(options){ }
   protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
   {
       optionsBuilder.UseLoggerFactory(loggerFactory);
       base.OnConfiguring(optionsBuilder);
   }
   ILoggerFactory loggerFactory = new LoggerFactory();
}

Кроме того, вы можете настроить ведение журнала с помощью интерфейса ILoggerProvider, как показано во фрагменте кода, приведенном ниже.


builder.Services.AddDbContext((provider, options) =>
{
    var loggerFactory = provider.GetRequiredService();
    options.UseLoggerFactory(loggerFactory);
});

Отправка данных журнала EF Core на консоль

Вы можете использовать следующий код, чтобы настроить экземпляр DbContext для использования LoggerFactory.


optionsBuilder.UseLoggerFactory(loggerFactory)
.EnableSensitiveDataLogging()
.UseSqlServer("Server=JOYDIP;Database=DemoDb;Trusted_Connection=True;");

Чтобы разрешить EF Core регистрировать данные на консоли, вы можете использовать следующий код.


optionsBuilder.UseSqlServer
("Server=JOYDIP;Database=DemoDb;Trusted_Connection=True;").
LogTo(Console.WriteLine).EnableDetailedErrors();

Полный исходный код нашего класса DbContext

Полный исходный код класса DbContext приведен ниже для справки.


public partial class DemoDbContext: DbContext
{
    public DemoDbContext()
    {}
    public DemoDbContext(DbContextOptions < DemoDbContext > options): base(options)
    {}
    public virtual DbSet < Customer > Customer
    {
        get;
        set;
    }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=JOYDIP;Database=DemoDb;Trusted_Connection=True;").LogTo(Console.WriteLine).EnableDetailedErrors();
        base.OnConfiguring(optionsBuilder);
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity < Customer > (entity =>
        {
            entity.Property(e => e.FirstName).IsRequired().HasMaxLength(50);
            entity.Property(e => e.LastName).IsRequired().HasMaxLength(50);
        });
    }
}
 

Гибкое ведение журналов с помощью EF Core

Ведение журнала является важным компонентом любого приложения для выявления и анализа проблем, которые могут возникнуть во время выполнения. При работе с EF Core вы можете записывать данные во встроенные целевые объекты журналов, а также интегрировать свое приложение со сторонними платформами ведения журналов для отправки данных в предварительно настроенные целевые объекты журналов.

Related Posts

Оставить комментарий