sjh37 / EntityFramework-Reverse-POCO-Code-First-Generator

EntityFramework Reverse POCO Code First Generator - Beautifully generated code that is fully customisable. This generator creates code as if you reverse engineered a database and lovingly created the code by hand. It is free to academics (you need a .edu or a .ac email address), not free for commercial use. Obtain your licence from
https://www.reversepoco.co.uk/
Other
700 stars 230 forks source link
code-generation database entity-framework reverse-engineering visual-studio

EntityFramework Reverse POCO Code First Generator

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

Please note that 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.

Give a Star! :star:

If you like or are using this project, please give it a star. Thanks!

Watch a short video clip (no audio)

Watch the video

To remove trial limitations, you will require a licence key.

Free to academics (you need a .edu, .ac or .sch email address), not free for commercial use.

Go to the ReversePOCO website for your licence key.

Upgrading v2 to v3

Please read the Upgrading documentation

What's new

Click here to see what's new in this release.

Supported databases

Highly customisable output

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. That's what it's there for.

If your database changes, re-save the <database>.tt file. That's it.

Click here to see a full list of features.

To install and use this project:

Connection strings

Settings.ConnectionString is mandatory in version 3. The generator uses it to read your database schema. The connection string is optionally placed into the OnConfiguring function:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){{#newline}}
{{{#newline}}
    if (!optionsBuilder.IsConfigured){{#newline}}
    {{{#newline}}
        optionsBuilder.UseSqlServer(@""{{ConnectionString}}"");{{#newline}}
    }{{#newline}}
}{{#newline}}{{#newline}}

Settings.ConnectionStringName This 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.

No need to edit the EF.Reverse.POCO.v3.ttinclude file directly as this file is generated from a C# project. This repository includes the BuildTT file that creates the EF.Reverse.POCO.v3.ttinclude from the Generator C# project.

Getting a pull request accepted

Have a read of [https://github.com/blog/1943-how-to-write-the-perfect-pull-request](How to write the perfect pull request)

My requirements are simple:

  1. Always keep the changes to a minimum, so I can see exactly what's changed regarding the pull request. I.e. No whitespace tidy-up, Etc.
  2. No tabs, only spaces (4).
  3. Edit the Generator C# project. Running this project will create the EF.Reverse.POCO.v3.ttinclude file. This repository includes the BuildTT project that creates the EF.Reverse.POCO.v3.ttinclude from the Generator C# project.
  4. Don't be tempted to do a few different enhancements in one pull request. Have one pull request for one bug fix/enhancement.

Regards, Simon Hughes