Hello;
I have a large database that I am integrating with the Asp.net Zero Starter App. I don't want to generated the database tables from the Code. I will in fact generated the code from the database as the 100s of tables are already exists. I did add the Audit Fields to match the the Abp approach.
How can I turn off Code First Migrations correctly?
This morning I started have exceptions thrown after I added a DbSet in the DataContext. The DbSet I add is for a table that has already been merged with the other AbpXxxxxx Tables.
An error occurred while starting the application.
InvalidOperationException: The model backing the 'DlwDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (<a class="postlink" href="http://go.microsoft.com/fwlink/?LinkId=238269">http://go.microsoft.com/fwlink/?LinkId=238269</a>). System.Data.Entity.CreateDatabaseIfNotExists.InitializeDatabase(TContext context)
TargetInvocationException: Exception has been thrown by the target of an invocation. System.RuntimeMethodHandle.InvokeMethod(object target, Object[] arguments, Signature sig, bool constructor)
ComponentActivatorException: ComponentActivator: could not instantiate Kw21.Dlw.EntityFramework.DlwDbContext Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate constructor, Object[] arguments, Type implType)
InvalidOperationException: The model backing the 'DlwDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (<a class="postlink" href="http://go.microsoft.com/fwlink/?LinkId=238269">http://go.microsoft.com/fwlink/?LinkId=238269</a>). System.Data.Entity.CreateDatabaseIfNotExists.InitializeDatabase(TContext context) System.Data.Entity.Internal.InternalContext+<>c__DisplayClassf.<CreateInitializationAction>b__e() System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) System.Data.Entity.Internal.RetryAction.PerformAction(TInput input) System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action<InternalContext> action) System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() System.Data.Entity.Internal.InternalContext.ForceOSpaceLoadingForKnownEntityTypes() System.Data.Entity.DbContext.System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext() Abp.EntityFramework.AbpDbContext.RegisterToChanges() Abp.Zero.EntityFramework.AbpZeroDbContext..ctor(string nameOrConnectionString) Kw21.Dlw.EntityFramework.DlwDbContext..ctor(string nameOrConnectionString) in DlwDbContext.cs + : base(nameOrConnectionString)
Please let me know.
Regards,
Leonard (Dino) Larouche
5 Answer(s)
-
0
Hi,
I have followed below approach in one of my previous projects.
- I have created POCO entities from existing database tables.
- Then I have created the initial migration file and deleted it's content.
- Applied this empty initial migration to database.
- Then I was able to use code first migrations for my new entities.
If you completely want to disable migrations, you can change this line <a class="postlink" href="https://github.com/aspnetzero/aspnet-zero/blob/master/src/MyCompanyName.AbpZeroTemplate.EntityFramework/AbpZeroTemplateDataModule.cs#L17">https://github.com/aspnetzero/aspnet-ze ... ule.cs#L17</a> to
Database.SetInitializer(null);
Thanks.
-
0
<cite>ismcagdas: </cite> Hi,
I have followed below approach in one of my previous projects.
- I have created POCO entities from existing database tables.
- Then I have created the initial migration file and deleted it's content.
- Applied this empty initial migration to database.
- Then I was able to use code first migrations for my new entities.
If you completely want to disable migrations, you can change this line <a class="postlink" href="https://github.com/aspnetzero/aspnet-zero/blob/master/src/MyCompanyName.AbpZeroTemplate.EntityFramework/AbpZeroTemplateDataModule.cs#L17">https://github.com/aspnetzero/aspnet-ze ... ule.cs#L17</a> to
Database.SetInitializer(null);
Thanks.
Can you please share the steps for doing this in .NET Core template?
-
0
Hi @exlnt,
I haven't done this with EF Core. Let me try a sample scenario and share my results with you.
I will probaby share it in this week.
Thanks.
-
0
Hi ismcagdas, I also want to know step by step approach of migrations for existing DB table and sp,udf to aspzero starter app flow.:)
Thanks
-
0
Hi @ultimatemm,
Actually AspNet Zero does not offer a solution for this officially. I just shared my own experience :).
There might be many problems using AspNet Zero with an existing database. For example, if you have a user table in your existing database, it will conflict with AspNet Zero's Users table. This is valid for other existing tables of AspNet Zero.
If you are using EF 6.x, you can try above steps I have shared before.
Thanks.