2012-11-06 23 views
10

Mam projektu WPF z poniższej struktury:Który projekt powinien włączyć migracje

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

Project1 to projekt, w którym mogę skompilować i dostarczyć exe do użytkownika.

Teraz chcę włączyć automatyczną migrację: Enable-Migrations –EnableAutomaticMigrations

project1 jest projekt domyślny. Kiedy uruchomię polecenie, oczywiście nie będzie w stanie znaleźć kontekstu bazy danych, który znajduje się w projekcie DataAccess. Mogę go włączyć w projekcie DataAccess.

Ale czy to prawda? Jak mogę go włączyć w projekcie project1?


edycja:

myślę, że mogę umożliwić migrację w projekcie DataAccess i mają MyConfiguration to odesłanie do DataAccess projektu?

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

Ale otrzymuję ten błąd:

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

Odpowiedz

12

próbowałeś za pomocą parametru -StartupProjectName?

Enable-Migrations -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

Ostatni parametr określa naśladować uruchomiony w tym projekcie, w tym wszelkie ustawienia z app.config/web.config.

Edytuj: jeśli chodzi o włączanie migracji, wyświetlany błąd prawdopodobnie wynika z tego, że konfiguracja MigrationsConfiguration jest domyślnie wewnętrzna. Można:

  • Upublicznij
  • Ustaw initializer DB gdzieś w projekcie DataAccess
  • Ustaw go w app.config/web.config dla projektu1. Mimo, że typ jest wewnętrzny, będzie to rozwiązać w czasie wykonywania i nadal działa:

    <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

ten pracował dla mnie, miałem dwa projekty w jednym roztworze i od tego użyłem 'enable-Migracje -ProjectName ProjectNameGoesHere - StartupProjectName StartupProjectNameGoesHere -ContextTypeName ContextNameToAddMigrationsGoes "Aby włączyć migracje dla drugiego projektu rozwiązania. – Dev

Powiązane problemy