Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768

EntityFramework Core: миграция по фактической структуре

24.06.2018, 20:41. Показов 1509. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как настроить стандартный EF-мигратор на работу по фактической структуре БД, а не по сохранённым в специальные таблицы метаданным?

В документации найти не получается. Опытным путём тоже не удаётся пройти следующий сценарий:
1. Создали структуру согласно миграции.
2. Что-то пошло не так, структура БД претерпела непредвиденные изменения.
3. Запустили мигратор снова, он привёл текущую структуру к требуемой.

Вот на третьем пункте мигратор, почему-то, не видит изменения структуры БД и фактическая ошибка случается уже намного позже, когда при попытке записать/прочитать данные, обнаруживается несоответствие структуры БД модели.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.06.2018, 20:41
Ответы с готовыми решениями:

EntityFrameWork - миграция для добавления колонки?
Как написать миграцию для добавления колонки? namespace WebApiServer.Migrations { using Microsoft.EntityFrameworkCore.Metadata; ...

EntityFramework Core: сессионная переменная
Возможно ли в рамках текущего контекста установить переменные, которые будут доступны при выполнении всех последующих запросов? Или же...

Миграция в БД [.Net Core]
Обновил до ASP.Net Core 1.0.1 на VS15, при выполнении миграции (Add-Migration) получаю ошибку: Startup project 'src\WebApp' is an...

5
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
25.06.2018, 07:04
kotelok, если можете, то пересоздайте схему базы заново. Если есть ценные данные, то приведите схему базы к какому-нибудь конкретному виду вручную и в таблице версий (migrations или как она называется) удалите записи о последующей (сломанной) миграции.

А вообще, будет вам урок классный. Отличный повод научиться выполнять изменения в транзакциях, а перед миграциями делать бэкапы.
1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
25.06.2018, 07:14  [ТС]
Usaga
Это я в курсе, но тут именно требования бизнеса автоматически приводить структуру к шаблону независимо от её исходного состояния с (по возможности) сохранением данных. Экономит кучу времени как нерадивым клиентам, так и техподдержке. В других проектах для этих целей используются либо полностью самописные велосипеды, либо что-нибудь доработанное на базе открытых библиотек. В новом проекте подумал обойтись стандартными средствами, но, похоже, EF так не умеет.
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
25.06.2018, 07:21
kotelok, скорее всего EF так уметь должен. Просто ему нужна некая конкретная схема и номер версии базы или ещё какие метаданные в специальной таблице.

Что-то из этого у вас сломалось, видимо.

Я не пользовался миграциями EF-а, так что не особо вам помощник, но мест, куда копать, у вас не много.

Не по теме:

Если честно, то я бы реализовал миграции или совсем вручную (SQL-скриптом) или с помощью какого-нибудь Fluent Migrations или чего подобного. Но EF-у бы такое доверять побоялся, ибо данные ценнее удобства.

0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
25.06.2018, 07:29  [ТС]
Основная проблемма именно в отсутствии метаданных, или в их несоответствии реальной структуре. Вероятно, как компромис можно будет попробовать реализовать свой механизм сбора информации о структуре, т.е. чтобы EF брал данные эти не из таблиц метаданных, а распарсивал фактическую структуру.

Цитата Сообщение от Usaga Посмотреть сообщение
Я не пользовался миграциями EF-а
А чем вы пользуетесь для обновления структуры БД? Какие сторонние решения?
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,407
25.06.2018, 07:34
Цитата Сообщение от kotelok Посмотреть сообщение
Основная проблемма именно в отсутствии метаданных, или в их несоответствии реальной структуре. Вероятно, как компромис можно будет попробовать реализовать свой механизм сбора информации о структуре, т.е. чтобы EF брал данные эти не из таблиц метаданных, а распарсивал фактическую структуру.
Как говнорешение, можно попробовать создать ещё одну базу старой версии, а потом мигрировать её к версии в которой у вас рабочая база застряла. А потом взять метаданные из мигрированной базы и перетащить в рабочую. Может проканает.

Но вам один чёрт придётся придусмотреть защитные меры на будущее. Чтобы подобное больше не повторилось.

Цитата Сообщение от kotelok Посмотреть сообщение
А чем вы пользуетесь для обновления структуры БД? Какие сторонние решения?
Своих собственных проектов у меня нет, а на работе мы пользуемся самописным скриптом миграции (со специальной таблицей для отслеживания версий, ибо клиентов много и не все на актуальном продукте сидят). Проект древнючий (2004 года), поэтому всё вручную и никакими EF-ами тогда не пахло.

На самом деле, у самописного скрипта есть серьёзный плюс: скрипт максимально гибок и работает с данных прямо в базе, не создавая трафика никакого.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2018, 07:34
Помогаю со студенческими работами здесь

Ошибка при установке Mysql.Data.EntityFramework core
При установке Mysql.Data.EntityFramework core через nuget выдает ошибку Failed to add reference to "System.Runtime" Please make sure...

Как правильно настроить EntityFramework Core для работы с MySQL?
Подскажите, как правильно настроить Entity Framework Core для работы с MySQL. Как правильно настроить чтоб при создание моделей через...

EntityFramework Core: "простой" запрос
Подскажите, кто поопытнее. Как на method-based синтаксисе реализовать подобный запрос, чтобы EF сгенерировал что-нибудь близкое по...

Рассчет фактической мощности БП
Гуглил гуглил и загуглил вот что: стоит смотреть какая мощность выдается по линии 12+, но так как это вообще почти нигде не пишут, то...

Списание материалов по фактической цена
Проблема такая: необходимо написать конфигурацию учета материалов на складе. Особенность в том, что материалы должны выдаваться подотчетным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru