2012-02-07 4 views
2

После обновления с EF 4.2 и миграции до EF 4.3 и включения миграции, перезапуска Visual Studio и всего остального, когда я пытаюсь вызвать Update-Database/Add-Migration, я получаю следующее:Entity Framework 4.3 Исключение миграции при обновлении-базе данных

System.Reflection.TargetInvocationException: Исключение было выбрано целью вызова. ---> System.ArgumentException:
Параметр неверный. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))
--- Конец внутренней трассировки стека исключений ---
на System.RuntimeType.InvokeDispMethod (имя строки, BindingFlags invokeAttr, целевой объект, Object [] арг, Boolean [ ] byrefModifiers, Int32 культуры, String [] namedParameters)
на System.RuntimeType.InvokeMember (имя String, BindingFlags BindingFlags, Binder связующий, целевой объект, Object [] providedArgs, ParameterModifier [] модификаторов, CultureInfo культуры, String [] namedParams)
at System.Management.Automation.ComMethod.InvokeMethod (метод PSMethod, Object [] аргументы)
Upda te-Database: Исключение было выбрано целью вызова.
В строке: 1 символ: 1
+ обновление базы данных-
+ ~~~~~~~~~~~~~~~
+ CategoryInfo: OperationStopped: (Исключение имеет б ... призвание. : String) [Update-Database], RuntimeException
+ FullyQualifiedErrorId: Исключение было брошено в целью вызова, Update-Database

Я пытался очистки весь проект, удаление эфф и миграции и пакетов папок. и делать это с самого начала и все той же ошибки!

Кто-то сталкивается с такой же ошибкой? Или есть решение для этого?

ответ

5

В случае, если у вас есть контекст и миграция в отдельных проектах, необходимо использовать опцию «-StartupProjectName YourProject» АДД-миграцию и обновление базы данных-

same error был в 4.3 беты. Я столкнулся с ним и в версии 4.3.

+1

Я тоже это заметил. Но в моем случае немного другое. У меня есть DbContext и Migrations в проекте ONE. Но это не стартап-проект. Добавление -StartupProjectName также разрешает это. Действительно раздражать, чтобы набирать это каждый раз. –

+0

Yeah Ef Team подтвердило это, что я нахожу странным, как сборки до 4.3 не страдал от этого! – Stacker

3

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

var configuration = new DbMigrationsConfiguration() { 
    MigrationsAssembly = typeof(YourMigrations).Assembly, 
    ContextType = typeof(YourContext) 
}; 

Затем вы можете сценарий его или автоматический запуск его используя класс DbMigrator:

var migrator = new DbMigrator(configuration); 
var scripter = new MigratorScriptingDecorator(migrator); 
string script = scripter.ScriptUpdate(null, null); 
+0

Им очень интересно это, пожалуйста, объясните больше? – Stacker

+0

Возможно, вы просто захотите проверить [документацию MSDN для DbMigrator] (http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigrator (v = vs.103) .aspx) –