It’s been a long haul and a long wait. I started work on this course, then switched gears to work on the Domain–Driven Design Fundamentals course with Steve Smith. When I returned to work on the EF6 course, a number of minor releases and patch releases had been published so I had to revise much of what I had already recorded, edited and produced.
But today, finally, the full course has been published on Pluralsight.
It is a little over 7 hours long. This is what I would have done had I written another huge book. So if you are looking for my next book, just watch this course! And you can go back to it for reference.
If you don’t have a Pluralsight subscription (and honestly, the $29 monthly fee if you were to just subscribe to watch this course, is less than those huge books), send me a note and I’ll send you a code for a trial. You’ll probably realize quickly that you want a subscription though to continue accessing the enormous library.
Overview of What’s New in EF6
Introduction |
What Is Entity Framework? |
What’s in This Course? |
What’s in This Module? |
A Brief History of Entity Framework |
Why EF6? |
A Lap Around EF’s CodePlex Site |
Overview of Changes to the EF Designer |
Overview of New Features |
What’s Not (Yet) in EF6 |
Summary |
Resources |
|
Getting to EF6
|
Introduction
In This Module |
Getting EF6 Into New and Old Projects |
Updating Projects to EF6 |
Summary |
Resources |
|
Performance and Stability Improvements
|
Introduction |
In This Module |
Faster Processing of LINQ’s Enumerable Contains |
Faster Mapping View Generation |
Using nGen to ‘Pre-JIT’ EF6 Assembly |
Reuse Open Database Connections |
Create DBs That Are More Scalable and Less Prone to Deadlocks |
Connection Resiliency for Transient Database Connections |
Digging into the Connection Resiliency Feature |
Quick Review |
Resources |
|
Changes to the EF Tooling
|
Introduction |
EF Designer History |
In This Module |
EF Designer’s New MSI Installer |
Creating a Code First Model From a Database in the Designer |
Database Views in Your Code First Model |
Customizing the Code First Designer Templates |
Refactoring the Generated POCOs and Model |
A Warning About a Naming Conflict With Code First From Database |
What Does the Empty Code First Model Wizard Do? |
Comparing the Code First Model Wizard to the EF Power Tools |
Using EF4 or EF5 With the New Designer |
A Notable Change to the Model First Workflow |
Why You Still Need the EF Power Tools |
Quick Review |
Resources |
|
Stored Procedure Mappings for Code First
|
Introduction |
In This Module |
Understanding EF Stored Procedure Mappings |
Visualizing Stored Procedure Mappings |
Differences Between Designer-Based and Code First Model Mappings |
Conventions for Procedures Created by Code First |
Customizing Mappings to Work With Existing Stored Procedures |
Quick Review |
Resources |
|
Custom Code First Conventions |
Introduction |
In This Module |
Custom Code First Conventions: Why Would You Want Them? |
Custom Conventions Basics With Lightweight Conventions |
Using Attributes to Specify Custom Conventions |
Encapsulating Custom Conventions |
Understanding and Controlling Execution Order |
Model-Based Conventions |
Extending Existing Conventions |
Quick Review |
Resources |
|
More Code First Goodies
|
Introduction |
In This Module |
Database Index Support in Code First |
Adding Indexes With Fluent API |
Setting the Default Database Schema |
Using AddFromAssembly to Load Conventions and Configurations |
Understanding and Fixing How Code First Pluralizes Table Names |
Using a PluralizationService to Localize Non-English Table Names |
Implementing a Custom Pluralization Rule in Your Data Layer |
Mapping to Results of Table Value Functions and Stored Procedures |
Quick Review |
Resources |
|
Enhancements to Code First Migrations
|
Introduction |
In This Module |
Affecting the Schema of the Migrations History Table |
Smarter Migrations With Idempotent Scripts |
Limitations of Existing Migrations Methods |
How Migrations Get From Method to SQL |
Create Custom Migrations for Other Database Operations |
Why HasColumnAnnotation and HasTableAnnotation? |
Implementing a Simple Table Annotation |
Implementing More Complicated Annotations |
Performance Tweak for MigrateDatabaseToLatestVersion Initializer |
Migrate From Multiple Models to a Single Database |
Using HasDefaultSchema and ContextKey for Multiple Model Support |
Easier Migrations for Multiple Models in a Single Project |
Combining Database Initializers and Migrations |
Quick Review |
Resources |
|
Improved Database Interaction
|
Introduction |
In This Module |
Simple Database Logging With the Log Property |
Tweaking the Log Functionality |
SQLCE Functions for LINQ Queries |
Introducing the Async EF6 Methods |
Demonstrating the Effect of Asynchronous EF6 Methods |
Perception and Performance: Load Testing With Async EF6 |
Quick Review |
Resources |
|
Code-Based DbContext Configurations and Interceptors |
Introduction |
Why DbConfiguration? |
In This Module |
Creating and Triggering a DbConfiguration Class |
Why Move Config File Settings to Code? |
Moving Connection Factory to DbConfiguration |
Moving Database Initializers to DbConfiguration |
The New NullDatabaseIntializer |
Provider Services and DbConfiguration |
Tap into the Pipeline With Interceptors |
Beyond the Interceptor Basics |
What Stops Does the DbCommandInterceptor Make in the Pipeline? |
Building an Interceptor for Database Logging |
Using Interceptors to Solve Complex Problems |
Understanding the Role of Dependency Resolution |
Hosting DbConfiguration in External Assemblies |
Quick Review |
Resources |
|
Sometimes It’s the Little Things |
Introduction |
In This Module |
EF6 and Mocking Frameworks |
Writing Tests to Mock Methods Like DbSet.Find |
Writing Tests to Mock LINQ Queries |
Nested Entities and Complex Types |
Fixing the Ambiguous Types Problem |
Custom Equals vs. Change Tracker Equals |
Smarter LINQ to Entities Queries |
Yes, You Can Haz Changes With HasChanges |
Quick Review |
Resources |