Я создал dockerized ASP. net Базовое приложение с автоматически сгенерированной настройкой идентичности (так что у меня уже была конфигурация структуры сущности по умолчанию). Я создал SQL Сервер в качестве отдельного контейнера, вот мой docker-compose.yml
:
version: '3.4'
services:
blazorapp1:
image: blazorapp1
build:
context: .
dockerfile: Dockerfile
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "[SOMEPASSWORD]"
ACCEPT_EULA: "Y"
Я протестировал конфигурацию базы данных: поскольку Visual Studio сгенерировал для меня настройку идентификации, я мог успешно создавать новых пользователей. и они были должным образом сохранены в памяти.
Затем я хотел создать новую таблицу базы данных:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public virtual DbSet<WeightLog> WeightLogs { get; set; }
}
Чтобы применить эти изменения, я использовал Add-Migration WeightLogger
в консоли диспетчера пакетов.
Вот вывод:
PM> Add-Migration WeightLogger
Build started...
Build succeeded.
An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing without the application service provider. Error: C:\root\.nuget\packages\microsoft.aspnetcore.identity.ui\3.1.1\staticwebassets\V4\
Unable to create an object of type 'ApplicationDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
Есть пара вещей, которые я здесь не понимаю. Первая ошибка указывает мне на C:\root\.nuget\packages\microsoft.aspnetcore.identity.ui\3.1.1\staticwebassets\V4\
, который не существует. Затем появляется вторая ошибка, сообщающая, что ApplicationDbContext
не может быть создано. Ссылка указывает мне на веб-страницу, которая сообщает:
Когда вы создаете новое базовое приложение ASP. NET, этот хук включается по умолчанию.
Итак, это значит, что мне не нужно ничего настраивать? Почему это не работает тогда? Нужно ли создавать миграции по-другому при использовании контейнера Docker в качестве среды?