@mletov

Миграция вылетает по Stack Overflow. Есть ли ограничение на объем данных в миграции?

Всем привет.

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

- Сделал в контексте заполнение данных в OnModelCreating (несколько тысяч записей в каждой таблице).

- Добавил в Program.cs строку
db.Database.Migrate();


- Сгенерил миграцию.

Если запускаю проект из Visual Studio - миграция нормально применяется.
А вот если пытаюсь сделать тоже самое с IIS - вылетает по Stack Overflow во время миграции.
Причем если заменить Migration на EnsureCreated, то тоже все работает нормально и на IIS, только мне нужны миграции.
Сократил количество записей до 20 в таблице - на IIS тоже стало выполняться.

Подскажите, плз, автоматическое применения миграций на IIS заточено только под минмиальное количество данных или это как-то решаемо?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Причина ошибки, как пишется в сообщении о ней - переполнение стека. Размер стека для потогков определяется процессом, в котором работает приложение. Обычно он фиксирован и записан в заголовке .exe. Если при размещении веб-приложения в своем процессе (так делается запуск из Visual Studio) стека хватает, то настройте размещение приложения вне процесса и в IIS: документация - здесь, по умолчанию AFAIK для IIS используется размещение приложения ASP.NET Core внутри его рабочего процесса, и используется размер стека этого рабочего процесса.

PS А вообще, я бы на вашем месте пересмотрел код миграций и использовал стек (локальные переменные методов имеющие тип значений, память, отводимая через stackalloc и т.п.) в нем по минимуму. Потому как требования к памяти приложения имеют свойство расти со временем, а стек задается фиксированной величиной.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы