Привет, программисты, я снова здесь, чтобы поделиться с вами некоторыми полезными знаниями. Сегодня, продолжая мои темы по базам данных, я покажу вам, как вы можете подключить свое приложение C # к postgre SQL, и вы можете задаться вопросом, зачем вам когда-либо понадобится или вы захотите использовать postgre в качестве вашей базы данных, если у вас есть SQL-сервер, который является наиболее распространенной базой данных среди C # разработчиков и приложений, и я дам вам несколько веских причин, чтобы использовать его.

Почему Постгре? ❓

Что ж, секунду назад я уже говорил вам, что наиболее часто используемой базой данных среди разработчиков C#/.NET является сервер SQL, так как это дуэт Microsoft, который широко используется крупными предприятиями для создания сложных систем для всех видов приложений. Но главный недостаток SQL-сервера заключается в том, что из коробки вы можете разместить его только на серверах Windows, которые дороги, и если вы хотите развернуть это означает, что вам придется заплатить за это. Принимая во внимание, что Postgre может быть размещен на сервере Linux, который дешевле, чем Windows, и во многих случаях вы можете бесплатно разместить свое приложение с базой данных postgre на некоторых платформах, и это основная причина знать, как подключить ваши приложения С# к базе данных postgre, поэтому вы можете хранить свои приложения, платя в последнюю очередь, чем при использовании SQL-сервера, или во многих случаях вообще не платя. Итак, сказав это, давайте запачкаем руки, написав код! 💪🏾

Предпосылки 📃

Чтобы следовать этому руководству, вам необходимо установить любую версию Postgre и pgAdmin, которые, как мы можем сказать, являются графическим интерфейсом для просмотра всех данных и таблиц базы данных. Если вы хотите, чтобы я написал сообщение об установке Postgre и pgAdmin, сообщите мне об этом в комментариях, я буду более чем счастлив это сделать.

Также вам необходимо установить инструменты Entity Framework Core с нашим dotnet cli, чтобы установить его, напишите следующую команду на своем терминале.

dotnet tool install --global dotnet-ef

После этого напишите эту другую команду на своем терминале dotnet ef, и вы должны увидеть вывод, подобный приведенному ниже.

_/\\__
               ---==/    \\\\
         ___  ___   |.    \\|\\
        | __|| __|  |  )   \\\\\\
        | _| | _|   \\_/ |  //|\\\\
        |___||_|       /   \\\\\\/\\\\

Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065

<Usage documentation follows, not shown.>

После этого вы готовы и готовы к работе!

Создайте новый веб-проект 🕸️

В этом примере я буду использовать проект веб-API asp net core, но вы можете использовать этот код для MVC, Razor или минимальных проектов API, поскольку их структура практически одинакова. Итак, создайте новое веб-приложение, используя dotnet cli.

dotnet new webapi -o [Name of your project here]

Код Первый подход 👨🏾‍💻

Я знаю, что пишу эту статью для очень начинающих, но в этом примере я использую этот подход, чтобы убедиться, что мы можем видеть, как данные вставляются в базу данных, поэтому я попытаюсь кратко объяснить, что такое подход «сначала код».

Подход сначала код — это один из трех подходов, которые Entity Framework предоставляет для работы с данными. Этот подход позволяет нам работать с объектами C# вместо того, чтобы работать напрямую с базой данных или любой другой библиотекой, такой как ADO.NET. Это очень полезно для нас, разработчиков, потому что мы можем продолжать работать с кодом при попытке связи с Postgre.

Добавьте модель человека 🙍🏾

Мы создадим модель Person, которая будет нашей таблицей на сервере SQL, и мы вставим данные нашего объекта в эту таблицу sql, поэтому код в конечном итоге будет выглядеть следующим образом.

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

Этот класс довольно прост, мы добавляем только классические поля для объекта Person, такие как идентификатор, имя, фамилия и возраст человека. Это было бы все для класса человека.

Установите nuget-пакеты Entity Framework 📦

Как я упоминал ранее, мы будем использовать Entity Framework для связи с базой данных SQL и сопоставления нашего объекта person с таблицей person в SQL. Мы установим три пакета EF, вы можете найти их в диспетчере пакетов nuget в Visual Studio, использовать консоль диспетчера пакетов или, как в нашем случае, установить с помощью dotnet cli.

dotnet add package Microsoft.EntityFrameworkCore.Core

dotnet add package Microsoft.EntityFrameworkCore.Tools

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Теперь, когда вы установили базовый пакет EF в свой проект, мы приступим к созданию класса AppDbContext.cs.

Создайте класс AppDbContext.cs

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Person>().HasData(
            new Person {Id = 1, Name = "Oscar", LastName = "Montenegro", Age = 28},
            new Person {Id = 2, Name = "Yolanda", LastName = "Montenegro", Age = 27}
        );

        base.OnModelCreating(builder);
    }

    public DbSet<Person> People { get; set; }
}

Во-первых, мы должны создать класс AppDbContext и сделать его наследником класса DbContext, а также создать пустой конструктор, вызывающий базовый конструктор из родительского класса. Затем мы переопределяем функцию OnModelCreating и используем построитель моделей, чтобы сообщить инфраструктуре сущностей, что наша коллекция должна иметь данные на момент создания на SQL, и мы передаем два объекта внутри функции HasData. И последнее, но не менее важное: мы создаем свойство DbSet с именем people, которое является множественным числом для Persons, поскольку это хорошая практика, когда вы создаете таблицу для определенного объекта, чтобы использовать множественное число для этого объекта.

Добавьте строку подключения 🧵

Перейдите к файлу appsettings.json (если он у вас есть, если не создайте его) и добавьте строку подключения к вашему экземпляру сервера sql, как вы можете видеть ниже, но без квадратных скобок:

"ConnectionStrings": {
    "PgDbConnection" : "Server=localhost;Database=MyFirstDb;Port=5432;User Id =YourUserId;Password=YourPassword;"
  }

Сервер. В этом примере мы будем использовать localhost, но вы можете использовать любой другой сервер.

База данных: это имя вашей базы данных, но, поскольку это первый подход к коду, существующей базы данных нет, поэтому вы можете дать этой базе данных любое имя, которое вы хотите, и она будет создана с этим именем.

Порт: порт Postgre по умолчанию обычно 5432, если он недоступен на вашем компьютере, вы можете выбрать следующий доступный порт, например, 5433 и так далее.

Идентификатор пользователя: суперпользователь по умолчанию, который я использую для этого примера, — «Postgres», и вы также можете использовать его или использовать свой собственный идентификатор пользователя. если у тебя есть.

Пароль: для этого вы должны использовать пароль, который вы создали для своего пользователя postgre.

Выполнять команды EF 🪖

Наконец, нам нужно выполнить несколько команд ef для создания базы данных из нашего кода.

dotnet ef migrations add "Initial Migration"

dotnet ef database update

После выполнения этих двух команд вы сможете войти в pgAdmin и увидеть созданную базу данных, а внутри схем должна быть таблица с именем People, и, в свою очередь, внутри этой таблицы вы У души есть две записи, которые являются записями, которые мы ввели в наш класс контекста.

Вывод 🌇

И это все, теперь вы можете начать добавлять больше таблиц, создавая классы C# и добавляя AppDbContext, чтобы сделать ваше приложение более полным и сложным. Я знаю, что этот пост был почти идентичен моему предыдущему, где я учил вас, как делать то же самое с SQL Server, но я не хотел продолжать говорить вам: «Если вы хотите знать, как это сделать, или проверьте мой последний пост, он почти идентичен». ». Я хотел, чтобы это был отдельный пост об интеграции Postgre в ваше приложение на C#, и в следующем посте я обещаю, что расскажу о чем-то совершенно другом 🤞🏾.

Спасибо, что уделили время и решили прочитать мой пост, следите за моими следующими выпусками здесь или на моем youtube-канале Unit Coding 🎥 увидимся в моем следующем посте!