efcore icon indicating copy to clipboard operation
efcore copied to clipboard

More streamlined workflow for early stage app development

Open axefrog opened this issue 9 years ago • 17 comments

While developing a new app, nobody's using my local database other than me, so the only migration I need is the initial one. The process involves writing some code, blowing away the old state of the database and associated migrations, then generating new ones and applying them back to the database. It sure would be nice to be able to do this literally in one step.

e.g. Something like dnx ef rebuild-all and have it destroy the existing migrations, unapply them from the database, generate new migrations and apply those to the database.

axefrog avatar Sep 08 '15 09:09 axefrog

I'm going to +1 this :smile:

davidfowl avatar Sep 08 '15 09:09 davidfowl

Could you use the existing:

 context.Database.EnsureCreated();
 context.Database.EnsureDeleted();

ErikEJ avatar Sep 08 '15 10:09 ErikEJ

Those aren't command line options though...?

axefrog avatar Sep 08 '15 11:09 axefrog

No, those are code, so you never need to fall out to the command line

ErikEJ avatar Sep 08 '15 13:09 ErikEJ

@bricelam Is it possible for someone to make a .cmd file to do this now, using the existing commands?

anpete avatar Sep 08 '15 16:09 anpete

Hmm, we don't expose any commands for the APIs Erik mentioned, but we have #2476 on the Backlog.

But I suppose you could, yes:

# Revert all migrations
dnx ef database update 0

# Remove last migration
dnx ef migrations remove

# Re-scaffold migaration
dnx ef migrations add InitialCreate

# Apply migration
dnx ef database update

bricelam avatar Sep 08 '15 17:09 bricelam

@bricelam Thanks! That's what I meant.

anpete avatar Sep 08 '15 17:09 anpete

EF Team Triage: Obviously there are some details of implementation to iron out, but we do agree that this scenario would be good to improve. Moving to the backlog as we will look at it after our initial RTM.

rowanmiller avatar Sep 09 '15 18:09 rowanmiller

Any updates on that? Take a look at Java Hibernate... Just set update strategy and it's done... At the moment with net.core it's painful with every change of db with code first approach

murbanowicz avatar Nov 09 '17 17:11 murbanowicz

I was thinking more about what this might look like today. Imagine if we allowed one temporary, non-destructive, automatic migration locally.

First, it is 100% local. It should never be shared with other team members. It could be stored in the local database. It might be stored as a temporary file somewhere for perf.

It can mutate. Just like automatic migrations in EF6, it would evolve change-to-change without any user interaction. You just change your domain model and it will diff against your local database (or maybe just the last migration) to bring your schema up to date.

It should be non-destructive. You should be able to take the schema back to the previous non-temporary migration without losing any data. Maybe instead of dropping columns and tables, it just makes required columns and foreign keys nullable instead.

It must eventually be reverted. We could do this automatically when adding or applying any migrations. Adding a migration would essentially "commit" all the changes you've done into a single migration.

...just some rough ideas I wanted to jot down.

bricelam avatar Sep 28 '20 21:09 bricelam

cc @glennc

bricelam avatar Sep 28 '20 21:09 bricelam

@bricelam Sounds very promising!

ajcvickers avatar Sep 29 '20 17:09 ajcvickers

hey @bricelam , do you think this can be added at some point ?

fadialjabali avatar Nov 19 '20 09:11 fadialjabali

@fadialjabali This issue is in the Backlog milestone. We are currently planning for 6.0, and will consider this issue. However, keep in mind that there are many other high priority features with which it will be competing for resources. Make sure to add your vote (👍) at the top.

ajcvickers avatar Nov 19 '20 19:11 ajcvickers

Any updates? 6.0 has already been out.

kaptcha0 avatar Mar 15 '22 19:03 kaptcha0

@kyro-dev as the milestone shows, this issue is currently planned for the 7.0 release.

roji avatar Mar 15 '22 20:03 roji

Alright, thanks!

kaptcha0 avatar Mar 15 '22 20:03 kaptcha0