powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF Core - в чем разница при выполнении миграции?
40 сообщений из 40, показаны все 2 страниц
EF Core - в чем разница при выполнении миграции?
    #40051829
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу в Startup.cs так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
  using (var scope = app.ApplicationServices.CreateScope())
  {
    scope.ServiceProvider.GetRequiredService<BlogContext>().Database.Migrate();
  }
}


или так

Код: c#
1.
2.
3.
4.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
  Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>());
}




В чем разница и как правильнее обеспечить миграцию? Пока вижу только что все нужные колонки появились (в первом случае).
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40051876
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
и как правильнее обеспечить миграцию


Правильно в классе Program.

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-5.0#register-the-context-with-dependency-injection

кусочек из доки:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public static void Main(string[] args)
{
     var host = CreateWebHostBuilder(args).Build();

    using (var scope = host.Services.CreateScope())
    {
        var services = scope.ServiceProvider;
        try
        {
            var context = services.GetRequiredService<SchoolContext>();
            DbInitializer.Initialize(context);
        }
        catch (Exception ex)
        {
            var logger = services.GetRequiredService<ILogger<Program>>();
            logger.LogError(ex, "An error occurred while seeding the database.");
        }
    }

    host.Run();
}
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40051952
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПравильно в классе Program.

А почему? Чем плохо делать все эти шаги в Configure() ?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40051973
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Правильно в классе Program.

О, да. Зачот++.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40051974
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
Чем плохо делать все эти шаги в Configure() ?

Тем что Configure совершенно для других и вполне определенных целей.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40051979
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

У меня доступ к базе берется на основании содержимого appSettings.json + еще полэкрана действий по определению нужной коннект-строки. Сейчас это все подтягивается через штатный DI. Как мне тогда кошерно вызывать миграцию?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40052051
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
авторПравильно в классе Program.


А почему? Чем плохо делать все эти шаги в Configure() ?

в Configure выполняется настройки обработки запроса.
вы же, простите, в уборной не обедаете? хотя.. чем плохо-то? ))


Landwarrior
У меня доступ к базе берется на основании содержимого appSettings.json + еще полэкрана действий по определению нужной коннект-строки. Сейчас это все подтягивается через штатный DI. Как мне тогда кошерно вызывать миграцию?


всё там же.. вы хоть документацию по ссылке открывали?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40052059
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior
У меня доступ к базе берется на основании содержимого appSettings.json + еще полэкрана действий по определению нужной коннект-строки. Сейчас это все подтягивается через штатный DI. Как мне тогда кошерно вызывать миграцию?

Тебе ведь выше показали - все точно так же, как в Configure, только DI получаешь не через app.ApplicationServices в Configure, а через host.Services в Main.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40052224
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, это можно ведь и в отдельный класс вынести...
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40052248
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
ну, это можно ведь и в отдельный класс вынести...


В документации и в приведённом выше коде так и сделано.
Кастомный класс называется DbInitializer.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40052276
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Кастомный класс называется DbInitializer.

Я видел муфлонов, которые это в сам DbContext помещали. Хорошо еще, что хотя бы не в конструктор.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053025
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Landwarrior
пропущено...


А почему? Чем плохо делать все эти шаги в Configure() ?


в Configure выполняется настройки обработки запроса.
вы же, простите, в уборной не обедаете? хотя.. чем плохо-то? ))


Landwarrior
У меня доступ к базе берется на основании содержимого appSettings.json + еще полэкрана действий по определению нужной коннект-строки. Сейчас это все подтягивается через штатный DI. Как мне тогда кошерно вызывать миграцию?


всё там же.. вы хоть документацию по ссылке открывали?


немного раньше это было норм. так что не в тему аналогия
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053026
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Кастомный класс называется DbInitializer.

Я видел муфлонов, которые это в сам DbContext помещали. Хорошо еще, что хотя бы не в конструктор.


и что они сломали?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053039
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
немного раньше это было норм. так что не в тему аналогия


если кому-то говнокодить норм, я против ничё не имею
настаивать не вижу никакого смысла
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053058
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
я против ничё не имею

Я имею. Говнокод зло.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053084
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
love_bach
немного раньше это было норм. так что не в тему аналогия


если кому-то говнокодить норм, я против ничё не имею
настаивать не вижу никакого смысла

Это не говнокод
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053095
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
я против ничё не имею

Я имею. Говнокод зло.

Я тоже за добро
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053098
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Landwarrior
Чем плохо делать все эти шаги в Configure() ?

Тем что Configure совершенно для других и вполне определенных целей.

Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053151
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост

Хорошо.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053237
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
hVostt
пропущено...


если кому-то говнокодить норм, я против ничё не имею
настаивать не вижу никакого смысла

Это не говнокод


Говнокод. И в документации описано как делать правильно.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053238
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост


Это вы с чего так решили?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053333
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост

Сконфигурировать и стартануть хост.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053334
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
если кому-то говнокодить норм, я против ничё не имею
настаивать не вижу никакого смысла

Как же ты в "кураторы" собрался?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053336
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
love_bach
Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост


Это вы с чего так решили?


приведи конструктивные аргументы, пожалуйста
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053337
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
love_bach
Program тоже для других и вполне определенных целей. Вернее для одной - точка входа, стартануть хост

Сконфигурировать и стартануть хост.


Startup для конфигурации. из его имени это следует
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053344
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
Startup для конфигурации. из его имени это следует

Но Startup.Configure вовсе не для конфигурации БД. При большой тяге к говнокодингу можно это поместить даже в ConfigureService, а то и в конструктор Startup. Как уже написали - дома ты можешь принимать пищу в уборной, а нужду справлять в гостинной. Только не следует делать это в общем жилье (т.е. рабочем проекте).
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053345
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
Startup для конфигурации. из его имени это следует

Кстати, не вижу в слове "startup" ничего похожего на слово "конфигурация". Кроме того, его назвать можно как угодно или даже вообще без него обойтись.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053382
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без отвлечения на прием пищи и прочее бла-бла, есть аргументы?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053406
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach
hVostt
пропущено...


Это вы с чего так решили?


приведи конструктивные аргументы, пожалуйста


Да легко.

1. Это прямо в документации прописано.
2. Миграция БД должна выполняться по-хорошему вообще отдельно, либо запуском приложения с ключом, либо (что более правильно) отдельным приложением. Когда лень (ну как оно обычно бывает, да?), это выполняется автоматически при запуске приложения -- т.е. при старте приложения, т.е. ДО инициализации хоста веб-приложения, так как если БД не стартанула, то всё остальное лишено смысла.
3. Возвращаюсь к изначальному, класс Startup настраивает работу хоста, Configure настраивает работу обработки запроса. Ни там, ни там, миграции БД нет места.

Тот наброс, что типа задача класса Program для запуска хоста -- ещё раз повторяю вопрос. Это с чего вы так решили? Что за глупый бред??
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40053420
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
1. Это прямо в документации прописано.

Нам вся ваша документация пох. У нас в бестпректисе и гайдлайне сказано: "Делать все по своим половым фантазиям"
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40054462
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

2. Миграция БД должна выполняться по-хорошему вообще отдельно, либо запуском приложения с ключом, либо (что более правильно) отдельным приложением.

Миграции сами по себе зло и подходят только для примитивных приложений.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40054472
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
Миграции сами по себе зло и подходят только для примитивных приложений.

+100500. Во всех серьезных случаях всю логику приходится делать только на хранимках.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40054753
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
hVostt

2. Миграция БД должна выполняться по-хорошему вообще отдельно, либо запуском приложения с ключом, либо (что более правильно) отдельным приложением.

Миграции сами по себе зло и подходят только для примитивных приложений.


Да канешна. Для любых приложений отлично подходят.

fkthat
+100500. Во всех серьезных случаях всю логику приходится делать только на хранимках.


Да канешна. Серьёзная логика пишется на чём угодно, на хранимках пишут когда по-другому тупо не умеют.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40054860
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt


Да канешна. Для любых приложений отлично подходят.


Тебе просто не приходилось работать с данными размером больше 20 Мб :)
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055012
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
hVostt


Да канешна. Для любых приложений отлично подходят.


Тебе просто не приходилось работать с данными размером больше 20 Мб :)


Да-да-да. У нас вот на одном проекте консолидированный кластер 2 Тб данных с нагрузкой в сотню пользователей. Количество действий в системе == KPI пользователей, прирост данных от 300-500 Мб в месяц.

Года два назад всё на хранимках было. За два года от хранимок избавились, производительность повысили на порядки, код стал поддерживаемым, юнит-тесты написали, ниче не падает и уходит в аут как раньше, когда на один фейл бросалась басота админов и они плакали и материли всех на чём свет стоит. Ща пара девопсов в режиме релакса лениво это поддерживают параллельно с другими системами.

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

Так што не лечите про свои ХП и размеры данных :)
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055015
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

Да-да-да. У нас вот на одном проекте консолидированный кластер 2 Тб данных с нагрузкой в сотню пользователей.)

В чем данные то?
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055048
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
hVostt


Да канешна. Для любых приложений отлично подходят.


Тебе просто не приходилось работать с данными размером больше 20 Мб :)

Если данных много, то надо помимо хранимок еще и триггера обязательно использовать. Тем более триггера еще и вложенные можно делать и по нескольку штук на таблицу. До 32 уровней вложенности триггеров можно делать. Ни одному ОРМу с его тормозными генеренными запросами такая мощь и не снилась.
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055050
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
В чем данные то?

В байтах
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055056
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В мешках же.
Мешки под глазами )
...
Рейтинг: 0 / 0
EF Core - в чем разница при выполнении миграции?
    #40055155
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
hVostt

Да-да-да. У нас вот на одном проекте консолидированный кластер 2 Тб данных с нагрузкой в сотню пользователей.)

В чем данные то?


В правде, конечно же )
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF Core - в чем разница при выполнении миграции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (6): Анонимы (4), Bing Bot 2 мин., Yandex Bot 5 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]