EF Reverse POCO against a SQL Database Project?

2019-02-25 21:22发布

问题:

Can I use the EF Reverse POCO generator directly against a SQL Database Project?

I keep my SQL database definition in a "Visual Studio SQL Database Project", which gives me some nice version control capabilities, schema comparison, and a few nifty deployment features. Sometimes I update the project files from a temporary database during development, but the version-controlled project is always the "truth" for any version.

If I use the EntityFramework Reverse POCO Code First Generator, will I need to round-trip my "truth" through an actual SQL database to generate POCO? Or can I use the POCO generator against a VS Database Project?

I know that the schema of a database project has a sort of meta-presence in various VS database interactions. For example, it shows up with a real database icon in the SQL Server Object Explorer. But I don't know if the code-first generator could/does leverage a similar ability to query it for metadata.

回答1:

There is a project called SqlSharpener on GitHub available as a NuGet package.

Description:

Parses SQL files to create a meta-object hierarchy with which you can generate C# code such as stored procedure wrappers or Entity Framework Code-First entities. Generate either manually or by invoking one of the included pre-compiled T4 templates.

Rather than generating code from the database or using a heavy abstraction layer that might miss differences between the database and data access layer until run-time, this project aims to provide a very fast and simple data access layer that is generated at design-time using SQL files as the source-of-truth (such as those found in an SSDT project).

I cannot vouch for it because I have never used it but it seems promising.



回答2:

For EntityFramework Reverse POCO Code First Generator, you would need to round-trip through an actual SQL database to generate the code-first code as you cannot use generator against a VS Database Project.