This generator creates code like an expert reverse-engineered your database and created the code for you. Perfectly.
Reverse engineers an existing database and generates Entity Framework Code
First Poco classes, Configuration mappings, Enumerations, DbContext, FakeDbContext (for easy unit testing) and calling Stored procedures and table-valued functions.
Beautifully generated code first code that is fully customisable
Supports EF6, EfCore 2 to 7.
Free to academics (you need a .edu or a .ac email address [contact me if you don't]), not free for commercial use.
Watch the v2 in-depth course at pluralsight I cover everything the v2 generator can do, and show you step-by-step how to reverse engineer your database properly.
Watch a short video clip (no audio)
Please note this is not the Microsoft reverse generator.
This generator creates code as if you reverse-engineered a database and lovingly created the code by hand.
It also allows you to customise the generated code to your liking.
To remove trial limitations, you will require a licence key
Free to academics (you need a .edu or a .ac email address), not free for commercial use.
Go to the ReversePOCO website for your licence key.
This generator is designed to be customisable from the very beginning,
and not fixed and rigid like other generators.
Play with the settings in the <database>.tt file.
If your database changes, re-save the <database>.tt file. That's it.
There is a dependency on EF6.Utility.CS.ttinclude which is included during VisualStudio installation if you select the component Microsoft.VisualStudio.Component.EntityFramework, which can be chosen from the list of optional packages under the "ASP.NET and web development" workload, and listed as "Entity Framework 6 tools".
Use Nuget and install the relevant NuGet package for your database.
Settings.ConnectionString is mandatory in v3, so you need to provide the connection string from your app.config/web.config/appsettings.json file. The generator uses this connection string to reverse-engineer your database. It no longer reads your connection strings from *.config files.
The Settings.ConnectionString string you use must have at least these privileges: ddladmin, datareader and datawriter. ddladmin is required for reading the default constraints.
In Visual Studio, right-click the project and select "add - new item".
Select Online, and search for reverse poco.
Select EntityFramework Reverse POCO Generator.
Give the file a name, such as Database.tt and click Add.
Edit the Database.tt file and specify the entire connection string in Settings.ConnectionString. The generator uses this to read your database schema and reverse engineer it.
Edit the Database.tt file and specify the connection string in Settings.ConnectionStringName which matches the ConnectionString key as specified in your appsettings.json, app.config or web.config.
Save the Database.tt file, which will now generate the Database.cs file. Every time you save your Database.tt file, the generator will run and reverse-engineer your database.
There are many options you can use to customise the generated code. All of these settings are in the Database.tt files.
Connection strings - and how they are used
Settings.ConnectionString is mandatory in version 3. It is used by the generator to read your database schema. It's also placed into the generated code:
Settings.ConnectionStringName is Not used by the generator but is placed into the generated DbContext constructor via a call to Settings.DefaultConstructorArgument.
public {{DbContextName}}(){{#newline}}
{{#if HasDefaultConstructorArgument}}
: base({{DefaultConstructorArgument}}){{#newline}}
{{/if}}
UI
A simple UI for the generator is available at
GitHub which helps you to create a regex to filter your tables.
Editing TT (T4) Files
To have full syntax highlighting and IntelliSense when editing TT files, I use the Resharper plugin ForTea. I can't imagine editing TT files without it.
With the new v3, you no longer have to edit the EF.Reverse.POCO.v3.ttinclude file as this file is now generated from a C# project. This repository includes the BuildTT file which creates the EF.Reverse.POCO.v3.ttinclude from the Generator C# project.