Nella nostra soluzione ASP.NET Core 2.1, abbiamo inserito EF e le migrazioni in un progetto separato.
Va bene per noi gestire le migrazioni dal progetto predefinito grazie alla CLI ad esempio:
dotnet ef migrations add NewMigration --project MyApp.MyBdd
In questo esempio, impostiamo MyApp.MyBdd come progetto di destinazione.
Ma la procedura guidata WebDeploy non mostra alcuna impostazione sulla migrazione Bdd.
Posso impostare manualmente la migrazione EF in un file pubxml come questo:
Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TimeStampOfAssociatedLegacyPublishXmlFile />
<EncryptedPassword />
</PropertyGroup>
<ItemGroup>
<EFMigrations Include="MyApp.MyBdd.MyDbContext">
<Value>Server=MyServer%3bDatabase=MyBdd%3bIntegrated Security=True%3b</Value>
</EFMigrations>
</ItemGroup>
</Project>
Generazione script SQL Entity Framework non riuscita (nulla nei registri)
Domanda : come impostare il progetto di destinazione sul file delle impostazioni di webdeploy?
EDIT Grazie a @IvanStoev per sottolineare che c'è un modo illustrato nel codice sorgente. Aggiungi questo al tuo <PropertyGroup>
:
<EFMigrationsAdditionalArgs>
--project MyApp.MyBdd
</EFMigrationsAdditionalArgs>
RISPOSTA ORIGINALE Purtroppo non è possibile. EFMigrations viene utilizzato da un'attività di generazione chiamata GenerateEFSQLScripts
( vedere l'origine ) che utilizza sempre il progetto distribuito per le migrazioni, come identificato dalla variabile MSBuildProjectDirectory
. Puoi vedere qui che è in esecuzione il progetto qui , senza alcuna possibilità di sovrascriverlo.
Vedo due opzioni: puoi refactoring il tuo codice in modo che DbContext risieda nel progetto che stai distribuendo, oppure potresti eseguire le migrazioni non durante la distribuzione ma all'avvio dell'applicazione, ovvero aggiungere
dbContext.Database.Migrate();
alla tua implementazione Startup.Configure()
.