Mam problemy z dodaniem początkowej migracji do kontekstu mojej bazy danych Entity Framework wewnątrz biblioteki klasy .NET Core..NET Core Entity Framework - Dodaj migrację do kontekstu w bibliotece klas
Kiedy biegnę:
dotnet ef migrations add migrationName -c PlaceholderContext
otrzymuję błąd:
Could not invoke this command on the startup project 'Placeholder.Data'. This version of the Entity Framework Core .NET Command Line Tools does not support commands on class library projects in ASP.NET Core and .NET Core applications. See http://go.microsoft.com/fwlink/?LinkId=798221 for details and workarounds.
więc kliknąłem na link i dowiedział się, że to nie jest możliwe, aby dodać migrację do biblioteki klas. Możesz jednak przekonwertować projekt biblioteki klas do projektu "aplikacji", ale nie mogę odwołać się do tego projektu "aplikacji" z mojej warstwy biznesowej (biblioteki klas).
struktura Projekt:
Placeholder.Web (WebAPI) =>Placeholder.Business (Class Library) =>Placeholder.Data (Class Library)
Placeholder.Web => Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddMvc();
//HERE WE REGISTER DB CONTEXT, (STATIC CLASS IN BUSINESS LAYER)
services.InjectBusinessContext(@"Data Source=(localdb)\ProjectsV13;Initial Catalog=Placeholder;Integrated Security=True;Connect Timeout=30;");
services.InjectWebServices();
services.InjectBusinessServices();
}
Jak mogę rozwiązać ten naprawdę irytujący problem?
Aktualizacja (1)
Mam przeliczone moja klasa Placeholder.Data bibliotekę do „aplikacji” z metody statycznej głównego. Ponieważ nie mogę już odwoływać się do Placeholder.Data od Placeholder.Business Muszę iść z obejściem 2 wymienionym na stronie dokumentu Microsoft. Kiedy teraz uruchomić skrypt migracji uzyskać następujące:
No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions object in its constructor and passes it to the base constructor for DbContext
Doh Oczywiście to przyzwyczajenie pracy, dbcontext jest zarejestrowany od mojego Placeholder.Web aplikacji (poprzez warstwy biznesowej). Wtedy moją jedyną opcją jest dodanie nowego kontekstu w nowej statycznej metodzie głównej i naprawdę nie chcę tego robić.
Spróbuję tego później, kiedy wrócę do domu! – Reft
proszę oznaczyć jako odpowiedź, jeśli to działa. Jeśli chcesz pójść o krok dalej, możesz również rozszerzyć IServiceCollection w projekcie biblioteki klas DATA i dodać DI i ciągi połączeń w nim, aby projekt WWW był całkowicie niezależny od projektu DATA. – Reza
Przepraszamy za spóźnioną odpowiedź, po prostu wypróbowaliśmy twój kod i działa, okrzyki. Ale! Jeśli spojrzysz na moją strukturę projektu, mam utworzony przez siebie folder o nazwie migracje. Kiedy uruchamiam polecenie, otrzymuję nowy folder migracji w katalogu głównym? 1. Czy mogę to zmienić? 2. Jeśli chcę dodać więcej migracji po pierwszej migracji początkowej, czy muszę ponownie wykonać te kroki lub utworzyć normalny sposób za pomocą konsoli menedżera pakietów? – Reft