2012-08-23 16 views
10

Quando si utilizzano migrazioni EF 4.3.1 ogni volta che è necessario aggiungere una migrazione o aggiornare il database, è necessario utilizzare il parametro StartUpProject. Posso impostarlo da qualche parte quindi non devo continuare a farlo? Non voglio impostare il mio progetto di dati come progetto di avvio. Il mio contesto e le migrazioni sono in progetti diversi se questo fa la differenza.Impostare il parametro del progetto di avvio per le migrazioni di Entity Framework

eccezione generata quando non si utilizza il parametro 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. 

risposta

2

Non sono sicuro se questo è ciò che si sta parlando, ma è possibile impostare il progetto predefinito nella console Package Manager per il progetto in cui la tua configurazione di Migrazione risiede in; è l'elenco a discesa più a destra.
In questo modo non ho mai dovuto fornire il progetto di avvio come argomento.

+0

ho fatto, ma se non specificare t Il parametro StartupProject genera un'eccezione –

+0

Seriamente? Puoi pubblicare l'intero output dell'eccezione? –

+0

aggiunto nell'eccezione nel post originale sopra –

1

Un modo pulito per collegare un progetto di prova alla soluzione.

Anche se non si desidera scrivere molti test di unità, è un progetto di avvio appropriato per uno spazio dei nomi del livello dati o simile.

Questo rende il problema di avvio più pulito, il gestore pacchetti si applica all'intera soluzione IIRC, quindi assicurati che il progetto predefinito sia quello con la cartella delle migrazioni al suo interno.

7

Almeno con Entity Framework 6, per specificare il progetto di avvio utilizzare il parametro -StartUpProjectName con update-database:

update-database -StartUpProjectName <String> 

È possibile utilizzare il comando get-help entro Console Package Manager per visualizzare possibili parametri per i comandi:

get-help update-database -detailed 
0

utilizzare il parametro StartupProject: Update-database -StartupProject "PROJECTNAME"

Problemi correlati