Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reverse Engineer: Visual Studio Item Template Wizard #5837

Closed
bricelam opened this issue Jun 22, 2016 · 20 comments

Comments

Projects
None yet
7 participants
@bricelam
Copy link
Member

commented Jun 22, 2016

We've talked about this, but I couldn't find an issue for it...

We should have a workflow similar to EF6:

  1. Project > Add New Item... > ADO.NET Entity Data Model
  2. Choose Code First from database
  3. Specify a provider and connection string
  4. Select database objects and specify additional options
@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Feb 20, 2017

In the meantime, I have added a simple GUI Tool to my SQLite / SQL CE Toolbox for VS 2010 and later, that allows you to generate a EF Core Model for SQL Server, SQLite and SQL Server Compact https://github.com/ErikEJ/SqlCeToolbox (currently included in the "daily" build)

@rowanmiller

This comment has been minimized.

Copy link
Member

commented Feb 24, 2017

@ErikEJ nice, just tried it out. Not sure if you have these planned... but it would be good to be able to put the output files into a folder. Also would be cool to install the EF Core runtime packages if they aren't already in the project 😄.

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Feb 25, 2017

Thanks, Rowan.
Re folder: Yes, it is planned.
Re runtime: yes, thought about at least adding a check for that, but first I would like to wait for VS 2017 RTM to test with the new project system. And what if the user wants to drop the poco classes in one project and the DbContext in another... then I would avoid requiring EF Core runtime..

Actually I think I will make an option to specify what to drop (poco, dbcontext or both)

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Feb 25, 2017

@rowanmiller Thanks for taking your time to provide feedback!
The latest daily build supports OutputPath, and warns if the provider package is missing. (In addition to some UI fixes re Window location, control layout and tab order)

@mguinness

This comment has been minimized.

Copy link

commented Aug 14, 2017

Have MSFT considered working w/ a 3rd party to achieve this? There is an excellent product by Devart called Entity Developer which has EF Core support.

They've done this in the past with Dotfuscator Community Edition and Devart has a similiar Entity Developer Express Edition (which is limited to 10 tables). Seems like this could be advantageous for both companies if a licensing deal could be agreed upon.

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Aug 15, 2017

@mguinness The sqlite toolbox does this already for sqlite, sql server and sqlce

@mguinness

This comment has been minimized.

Copy link

commented Aug 15, 2017

@ErikEJ Although you have a great tool, it isn't a full replacement for the old EDMX designer yet. Maybe I'm missing something (I saw the DGML export), but there is no GUI to view the database entities.

I could be wrong, but I think a lot of EF6 users are looking for the EDMX designer experience (using database first) which Entity Developer provides (see below). If you have plans to add that functionality that would be awesome.

image

@bricelam

This comment has been minimized.

Copy link
Member Author

commented Aug 15, 2017

@mguinness You're looking for issue #1027

@mguinness

This comment has been minimized.

Copy link

commented Aug 15, 2017

@bricelam Ah yes, you're correct. Apologies for muddying the waters here.

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Sep 8, 2017

I have implemented this in my "EF Core Power Tools" - try it out and let me know what you think! https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools

@syndicatedshannon

This comment has been minimized.

Copy link

commented Jan 22, 2018

I'm not sure the use-case targeted by this issue, but I hope it isn't just a means to create initial prototypes for new developers.

Reverse-engineering a live database and reacting to schema changes that are already deployed isn't best practice. It is healthier to work with a revision-controlled authoritative source for schema.

Is this the issue where I would look to refresh my EF models from my Visual Studio SQL Data Project?

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Jan 22, 2018

@syndicatedshannon Just publish your VS Database Project to a new LocalDB database, and refresh schema from that

@syndicatedshannon

This comment has been minimized.

Copy link

commented Jan 26, 2018

Erik's suggestion is specifically the type of deployment-hard-linked toolchain I'm looking to avoid.

Code should be automatically verified against the authority, i.e. the checked-out schema revision; not a specific deployment. That sort of deployment-specific dependency is one of the factors that makes software fail to scale, and my team works very hard to produce maintainable software.

@bricelam

This comment has been minimized.

Copy link
Member Author

commented Jan 26, 2018

Looking for #4321?

@syndicatedshannon

This comment has been minimized.

Copy link

commented Jan 28, 2018

@bricelam : Yes, that would match, thank you for the reference.

Although, I had hoped it wouldn't require writing to a separate API, for example if there was a neutral way to approach both external DB and VS SSDT database projects. I see, looking at the DACFX API Rowan linked, where that would be an excellent toolset, but without the correct abstractions in this issue here, I probably wouldn't really have any shortcuts to produce the tooling myself.

Ultimately, I have a broader concern that EF may still have regressed in supporting multidisciplinary teams (data separate from code), even when reaching the target "ready to replace EF6" status. I see so many tools built to avoid working with DDL, and demoting DDL to secondary concerns, or wrapping it in lambdas, or fluent syntax, or requirements to first be an OO developer. While I have those OO skills, I'm very expensive.

I also feel those techniques really aren't a good low-impedance vehicle to convey or store authoritative schema, in many relational data scenarios. I appreciate the capabilities provided by EF, but I worry its changes are backing us into a corner.

Anyway, I'll promote #4321 where I can. Thanks again.

@bricelam bricelam removed this from the Backlog milestone Mar 9, 2018

@ajcvickers

This comment has been minimized.

Copy link
Member

commented Mar 10, 2018

Closing this for now because we are not planning on implementing this at this time. (Also, @ErikEJ has already implemented something like this in the EF Core Power Tools.)

We may reconsider putting something in the box for this based on feedback/telemetry, since that would be useful for a different class of user, but the cost of shipping in VS is very high, so at least for now we're not planning on doing this.

@MarcoLoetscher

This comment has been minimized.

Copy link

commented Mar 11, 2018

It's a very bad decision to close this issue. This is a critical O/RM feature on  your roadmap. If the costs are too high to ship the function with Visual Studio, it can be provided as an extension. I don't understand why the world's largest software company (Microsoft) cannot recruit enough staff for this project (EF Core). I hope that as many developers as possible will protest against it.

@ErikEJ

This comment has been minimized.

Copy link
Contributor

commented Mar 11, 2018

@MarcoLoetscher Have you tried my free Visual Studio extension (EF Core Power Tools)?
I would be happy to work with you on anything that you miss.

@ajcvickers

This comment has been minimized.

Copy link
Member

commented Mar 12, 2018

@MarcoLoetscher Can you explain why you think this is so important?

@MarcoLoetscher

This comment has been minimized.

Copy link

commented Mar 13, 2018

It makes life easier for us developers. You could also ask what an IDE like Visual Studio needs. Most people get along better with visual tools than with a command-line.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.