Задайте параметр ProjectUp Project для миграции Entity Framework

При использовании переходов EF 4.3.1 каждый раз, когда мне нужно добавить базу данных миграции или обновления, я должен использовать параметр StartUpProject. Могу ли я установить это где-нибудь, поэтому мне не нужно продолжать это делать? Я не хочу, чтобы мой проект данных был запущен. Мой контекст и миграция находятся в разных проектах, если это имеет значение.

Исключение выбрано, если не используется параметр StartpProject:

update-database -verbose
Using NuGet project 'Data.Deployment'.
Using StartUp project ''.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
   --- End of inner exception stack trace ---
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Management.Automation.ComMethod.InvokeMethod(PSMethod method, Object[] arguments)
Exception has been thrown by the target of an invocation.

Ответ 1

По крайней мере, с Entity Framework 6, чтобы указать Startup Project, используйте параметр -StartUpProjectName с базой данных обновлений:

update-database -StartUpProjectName <String>

Вы можете использовать команду get-help в консоли диспетчера пакетов, чтобы просмотреть возможные параметры для команд:

get-help update-database -detailed

Ответ 2

Я не уверен, что это то, о чем вы говорите, но вы можете установить проект по умолчанию в консоли диспетчера пакетов в проект, в котором находится ваш Migrations config; это самый правый раскрывающийся список.
Таким образом, мне никогда не приходилось предлагать проект запуска в качестве аргумента.

Ответ 3

Чистый путь вокруг этого - присоединить тестовый проект к решению.

Даже если вы не хотите писать много модульных тестов, это соответствующий проект запуска для пространства имен уровня данных или аналогичного.

Это делает ваш запуск более чистым, диспетчер пакетов применяется ко всему решению IIRC - поэтому убедитесь, что проект по умолчанию - тот, у которого есть папка миграции.

Ответ 4

Используйте параметр StartupProject: Update-database -StartupProject "PROJECTNAME"