Конвертируйте проект основного веб -приложения ASP.NET, чтобы использовать PostGRESQL с Entity Framework.
Это позволяет разработать основные проекты ASP.NET с использованием кода VS на MacOS или Linux Targets.
В этом проекте используется .NET 7.0 Target Framework, ASP.net Core Web Application MVC Scaffold Project Project от Visual Studio 2022 (версия 17.4).

Настройка проекта уже завершена в этом репозитории - обеспечить настройку среды; Затем прыгайте на запуск решения.
Этот проект требует PostgreSQL - инструкции по установке приведены ниже.
При использовании кода Visual Studio вам необходимо будет генерировать сертификаты разработчика ASP.NET Core, выпустив следующие команды из терминала:
dotnet dev-certs https --clean
dotnet dev-certs https
Для команд database ef вам нужно будет установить основные инструменты Entity Framework .NET CLI:
dotnet tool install --global dotnet-ef
Ниже указаны инструкции для использования PostgreSQL в основном проекте ASP.NET.
Установите пакет Npgsql.EntityFrameworkCore.PostgreSQL nuget в веб -приложении ASP.net.
Для этого вы можете использовать командную строку dotnet , выполнив:
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.2
PackageReference отредактируйте файл.
< PackageReference Include = " Npgsql.EntityFrameworkCore.PostgreSQL " Version = " 3.1.2 " /> Настройте строку подключения в Project Appsettings.json, заменяя username , password и dbname соответствующим образом:
"ConnectionStrings" : {
"DefaultConnection" : " User ID=username;Password=password;Server=localhost;Port=5432;Database=dbname;Integrated Security=true;Pooling=true; "
}, Inside Program.cs Замените параметры UseSqlServer на UseNpgsql :
builder . Services . AddDbContext < ApplicationDbContext > ( options =>
options . UseNpgsql ( connectionString ) ) ; Перед тем, как решение будет выполнено, обязательно запустите миграцию структуры объекта.
Первоначальные миграции могут пройти неудачу из-за шаблона основного шаблона ASP.NET с миграцией предварительного поколения для SQL Server.
При попытке запустить миграцию, вы можете увидеть такие ошибки, как:
Npgsql.postgresexception (0x80004005): 42704: Тип "nvarchar" не существует
System.NullReferenceException: ссылка на объект не установлен на экземпляр объекта.
System.InvalidoPerationException: отсутствие отображения с реляционным типом можно найти для свойства «microsoft.aspnetcore.identity.identityuser.twofactorenabled» с типом Clr 'bool'.
Удалить всю папку миграции и восстановить новые миграции.
Создайте новую миграцию с использованием консоли Manager Manager Package Visual Studio (из меню: инструменты -> Nuget Package Manager -> Консоль менеджера пакетов):
PM> Add-Migration
Или из командной строки через Dotnet CLI:
$ dotnet ef migrations add Initial
Если инструменты миграции DotNet не существуют, не забудьте установить инструменты, используя инструкции выше в настройке среды.
Выполните миграцию с помощью любой консоли Manager Manager Package Visual Studio (из меню: инструменты -> Nuget Package Manager -> Консоль диспетчера пакетов):
PM> Update-Database
Или из командной строки через CLI Dotnet выполните следующую команду в каталоге проекта, где находится файл .csproj :
$ dotnet ef database update
После запуска миграции создается база данных, и веб -приложение готово к запуску.
Вот инструкции по настройке сервера PostgreSQL на Mac с помощью Homebrew.
Используйте Brew для установки PostgresQL, затем запустите сервис:
$ brew install postgresql
$ brew services start postgresql
Создайте пользователя, использующего команду createuser из терминала, где username - ваше желаемое новое имя пользователя. Используя аргумент -P , вам будет предложено настроить пароль.
$ createuser username -P
Создайте свою базу данных, используя команду createdb из терминала, где dbname - ваше желаемое новое имя базы данных.
$ createdb dbname
В настоящее время запустите миграцию фреймворта по предприятию решения (см. Выше инструкции).
Запустите интерактивный терминал PostgreSQL и подключитесь к базе данных.
$ psql dbname
В терминале интерфейса postgresql списка таблицы с использованием команды dt :
dbname=# dt
List of relations
Schema | Name | Type | Owner
--------+-----------------------+-------+--------------
public | AspNetRoleClaims | table | username
public | AspNetRoles | table | username
public | AspNetUserClaims | table | username
public | AspNetUserLogins | table | username
public | AspNetUserRoles | table | username
public | AspNetUserTokens | table | username
public | AspNetUsers | table | username
public | __EFMigrationsHistory | table | username
(8 rows)
Если разрешения не были установлены должным образом во время создания базы данных, задним числом исправление, предоставив привилегии, где dbname является именем вашей базы данных, и username пользователя, которого вы создали:
$ psql dbname
dbname=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;