Я хотел отладить Seed()
метод в моем классе конфигурации базы данных Entity Framework, когда я запускаю Update-Database
из консоли диспетчера пакетов, но не знал, как это сделать. Я хотел поделиться решением с другими на случай, если у них возникнет такая же проблема.
entity-framework-5
Сачин Каинт
источник
источник
migrate.exe
с консоли, чтобы подключить текущую визуальную студию. Более подробная информация в этом ответе: stackoverflow.com/a/52700520/350384Я решил это путем открытия нового экземпляра Visual Studio, а затем открытия того же решения в этом новом экземпляре Visual Studio. Затем я подключил отладчик в этом новом экземпляре к старому экземпляру (devenv.exe) при выполнении команды update-database. Это позволило мне отладить метод Seed.
Чтобы убедиться, что я не пропустил точку останова, не подключившись вовремя, я добавил Thread.Sleep перед точкой останова.
Я надеюсь, что это поможет кому-то.
источник
Если вам нужно получить значение определенной переменной, можно быстро создать исключение:
источник
Более чистое решение (я думаю, для этого требуется EF 6), ИМХО, будет вызывать update-database из кода:
Это позволяет вам отлаживать метод Seed.
Вы можете сделать еще один шаг и построить модульный тест (или, точнее, интеграционный тест), который создает пустую тестовую базу данных, применяет все миграции EF, запускает метод Seed и снова удаляет тестовую базу данных:
Но будьте осторожны, не запускайте это против вашей базы данных разработки!
источник
Я знаю, что это старый вопрос, но если все, что вам нужно, это сообщения, и вы не хотите включать ссылки на WinForms в свой проект, я создал простое окно отладки, в котором я могу отправлять события трассировки.
Для более серьезной и пошаговой отладки я открою еще один экземпляр Visual Studio, но для простых вещей это не обязательно.
Это весь код:
SeedApplicationContext.cs
И на вашем стандартном Configuration.cs
источник
SeedInternal
метод мог ее использовать)Отладка - это одно, но не забывайте вызывать: context.Update ()
Также не зацикливайтесь на try catch, если на консоль не попадут хорошие внутренние исключения.
https://coderwall.com/p/fbcyaw/debug-into-entity-framework-code-first с уловом (DbEntityValidationException ex)
источник
У меня есть 2 обходных пути (без,
Debugger.Launch()
поскольку это не работает для меня):Чтобы распечатать сообщение в консоли диспетчера пакетов, используйте исключение:
throw new Exception("Your message");
Другой способ - распечатать сообщение в файле, создав
cmd
процесс:источник