My Entity Framework Cheat Sheet

This is a list of tools I use to get generated code and get work done quickly with Entity Framework.

Generate SQL/Database from a DbContext

Tip: If you are doing this a second time to rebuild your database (after requirements changes), you can...

  • ... unload your Web or Api, Services, and Tests projects and just have your DbModels and DbContext projects open.  That way you can rebuild the solution easily targetting just your Entity Framework related code.  (Assuming you may have code referencing your DbModels which are changing). 
  • ... or if you are rebuilding only a subset of new tables, run a "Reset" migration first using this trick to omit the tables you are working on.  Then remove the Ignore methods and run a second migration for those tables in question.
  1. For the entities, create a models directory and create classes in it.
    1. If your primary key does not follow convention name, use the [Key] attribute.
    2. Create navigation properties for many to one relationships; create a property for the ID and the object.
    3. If your nav prop ID does not follow convention, use the [ForeignKey] attribute on the object.
    4. Other attributes to use: Required, MaxLength, Index, InverseProperty, Column (if you want your db column to have a different name), [Table("TableName", Schema = "SchemaName")]
    5. Don't forget to make some fields nullable if necessary.
  2. VIEW > Other > Package Manager Console.
  3. Make sure the console is showing the correct project.  You also may need to set that project as the startup project in VS so it can find the correct config file with the DB connection string.
  4. If you are trying to recreate your database, make sure to drop the DB or change the connection string.  Also remove the Migrations folder.
  5. Make sure you have a DbContext file with:
    1. A good database connection string.
    2. Sub-classing DbContext
    3. public DbSet<Entity> Entities {get;set;}
    4. If you are using .NET Core, you will need a IDesignTimeDbContextFactory or a default constructor.
  6. Type: Enable-Migrations.  Skip this for .NET Core
  7. Add-Migration MigrationName
  8. Update-Database -Script or for .NET Core: Script-Migration.  Save off the SQL if you want it.
  9. Update-Database.  Now your database tables are created.

Generate Classes for Entity Framework Code-First from an Existing Database

For EF Core, the process has changed.  See the Scaffold-DbContext command.

For EF 6, the below process works well.
  1. Prerequisite: An existing database
  2. Do one time:  Download Entity Framework 6 Tools for Visual Studio 2012 & 2013.
  3. Right click a project
  4. Add new item...
  5. Search for ADO, select ADO.NET Entity DataModel.
  6. Name it.
  7. Select Code First from database.
  8. Select / Create Database connection.
  9. Select tables you want to include.
  10. Finish
  11. Now you have models and a DbContext to work with.

Comments

Popular Posts