2012-07-09 29 views
42

Próbuję użyć migracji danych Entity Framework, jak opisano w this post.Jak zaimplementować narzędzie IDbContextFactory do użytku z migracjami danych Entity Framework

Jednak, gdy próbuję wykonać krok Enable-Migrations, otrzymuję następujący błąd w opakowaniu konsoli Manager:

The target context 'MyDataContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory 

Więc stworzyłem klasę fabryki, która implementuje IDbContextFactory w projekcie, który zawiera moje DbContext klasę , ale migracje danych nie wydają się rozpoznawać.

Czy jest coś, co powinienem zrobić, aby poinstruować migrację danych do korzystania z tej klasy fabrycznej?

Odpowiedz

58

Też uderzyłem w ten problem, ponieważ napisałem swój kontekst, aby pobrać nazwę ciągu połączenia (a następnie użyć ninject, aby go podać).

Proces już przeszedł wydaje słuszne, o to fragment mojej implementacji klasy, czy to z żadnej pomocy:

public class MigrationsContextFactory : IDbContextFactory<MyContext> 
{ 
    public MyContext Create() 
    { 
     return new MyDBContext("connectionStringName"); 
    } 
} 

To powinno być wszystko, czego potrzebujemy.

+0

Dzięki za odpowiedź - to działa. Nie potrafię sobie wyobrazić, co zrobiłem źle po raz pierwszy, ponieważ pamiętam, że sam wykonałem ten sam schemat. W każdym razie problem został rozwiązany. Dzięki. –

+0

Idealne, cieszę się, że pomogło :) – dougajmcdonald

+2

Skąd wziąłeś tę klasę? –