I have been developing an Application using Ef-Core for a while, which means i have multiple existing migrations (including the ModelSnapshot). Now i have decided to start using SqlLite for local development (while the hosted version still uses SqlServer). To reflect this in the code i created two more Context classes
SqlServerContext : AppContext {}
SqlLiteContext : AppContext {}
where AppContext contains all the Db-Sets while the derivated classes set up the different connections and some additional configurations (like a data-seed for local development). These get added via Dependency Injection in the startup, depending on the environment.
When i create a new Migration using
dotnet-ef migrations add TestMigration --context SqlServerContext
it creates a new ModelSnapshot (SqlServerContextModelSnapshot.cs) instead of continuing to use the existing one (AppContextModelSnapshot.cs). I have to specify the Context since migrations are dependent on the Databaseprovider being used.
Is there any way to tell my new Context to keep using the existing ModelSnapshot as a basis? Or am i using the context wrong and is there a better way to have environment specific databases and configurations?
Since the AppContext is already referenced everywhere in the project from the previous development, i would prefer not to simply rename the SqlServerContext to AppContext and the AppContext to something else (like BaseContext)
Ivan Stoev was right with his comment!
Just rename the AppContextModelSnapshot.cs
to SqlServerContextModelSnapshot.cs
and replace every appearence of [DbContext(typeof(AppContext))]
with [DbContext(typeof(SqlServerContext))]
inside the Snapshot and all the migrations.
Thanks!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With