2012-11-06 15 views
10

Ho un progetto WPF, con la struttura di seguito:Quale progetto devo abilitare le migrazioni

project1(solution) 
|->Model(project) 
|->DataAccess(project) 
|->project1(project) 

Project1 è il progetto dove compilo e fornire i exe per l'utente.

Ora voglio per consentire la migrazione automatica: Enable-Migrations –EnableAutomaticMigrations

project1 è il progetto di default. Quando eseguo il comando, ovviamente non sarà in grado di trovare il contesto del database, che si trova nel progetto DataAccess. Sono in grado di abilitarlo nel progetto DataAccess.

Ma è corretto? Come posso abilitarlo nel progetto project1?


CURA:

credo di poter abilitare la migrazione nel progetto DataAccess, e lo hanno MyConfiguration riferimento ad DataAccess progetto?

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>()); 

Ma ottengo questo errore:

Error 2 'DataAccess.Migrations.Configuration' is inaccessible due to its protection level 

risposta

12

Hai provato a usare il parametro -StartupProjectName?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

L'ultimo parametro specifica di emulare in esecuzione all'interno di quel progetto, comprese le eventuali impostazioni da app.config/web.config.

Modifica: come per l'attivazione delle migrazioni, l'errore che si sta verificando è probabilmente dovuto al fatto che MigrationsConfiguration viene creato per impostazione predefinita come interno. È possibile:

  • renderlo pubblico
  • Impostare l'inizializzazione DB da qualche parte nel progetto DataAccess
  • Situato nel app.config/web.config per project1. Anche se il tipo è interno, si risolverà in fase di esecuzione e ancora lavoro:

    <entityFramework> 
        <contexts> 
        <context type="DataAccess.FooContext, DataAccess"> 
         <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[DataAccess.FooContext, DataAccess], [DataAccess.Migrations.Configuration, DataAccess]], EntityFramework, PublicKeyToken=b77a5c561934e089"> 
         </databaseInitializer> 
        </context> 
        </contexts> 
    </entityFramework> 
    
+0

Questo ha funzionato per me, ho avuto due progetti su una soluzione e da questo ho usato 'Enable-Migrazioni -ProjectName ProjectNameGoesHere - StartupProjectName StartupProjectNameGoesHere -ContextTypeName ContextNameToAddMigrationsGoesHere' per abilitare le migrazioni per il secondo progetto sulla soluzione. – Dev

Problemi correlati