33

Używam .NET 4.0, MVC3 i EF5 z kodem jako pierwszym.Nie znaleziono typu kontekstowego w zespole.

Moje rozwiązanie jest podzielony na trzy projekty, z zależnościami, jak wskazano:

Project.Web -> Project.BLL -> Project.DAL

Warstwa Project.DAL zawiera moich danych Entity Framework Klasa kontekstu i wszystkie moje jednostki, ale moim projektem startowym jest Project.Web, więc zawiera on mój Web.config, ciągi połączeń i aktualną kompaktową bazę danych SQL.

Próbuję włączyć migrację, więc mogę dodać nową tabelę do mojego modelu EF bez wymazywania istniejących danych. Jednak gdy uruchamiam „Enable-Migracje”, otrzymuję

No context type was found in the assembly 'Project.Web'. 

Jeżeli ustawić projektu uruchamiania jako Project.DAL powoduje zmianę o błędach do

Could not load assembly 'Project.Web'. (If you are using Code First Migrations inside Visual Studio this can happen if the startUp project for your solution does not reference the project that contains your migrations. You can either change the startUp project for your solution or use the -StartUpProjectName parameter.) 

Czy ktoś wie dlaczego ten błąd jest bycie spowodowane lub co mogę zrobić, aby to naprawić?

Odpowiedz

82

W końcu znalazłem odpowiedź w pytaniu this. Zasadniczo w konsoli programu Package Manager znajduje się menu "Default project". Musisz ustawić to w projekcie, który zawiera twój kontekst EF.

+10

Pamiętaj, aby powiększyć okno Pakiet konsoli Menedżer, czy to może być po prawej stronie paska narzędzi okna, a będziesz tęsknił za tym jak ja. – Steve

+0

Czy jest jakiś sposób, aby ustawić go gdzieś w konfiguracji? Próbuję skonfigurować automatyczne migracje podczas publikowania na lazur, ale wygląda na to, że się nie udało, ponieważ uruchamia polecenie aktualizacji-bazy danych w projekcie startowym zamiast DAL – amhed

+1

Dzięki. Wydaje się teraz tak oczywiste :) – JMG

0

zdarza się także, jeśli z jakiegoś powodu klasa z połączeniem nie jest w projekcie. Kliknięcie prawym przyciskiem myszy i "dodaj do projektu" rozwiązuje ten problem.

1

Dla kogo, kto popełnił ten błąd tak jak ja:

Twoja klasa kontekst musi dziedziczy DbContext, tak po prostu:

public class DirectorRequestContext : DbContext 
{ 
    public DbSet<DirectorRequest> DirectorRequests { get; set; } 
}