Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EF Core with Patterns
Search
Anthony Sneed
February 27, 2018
Technology
0
250
EF Core with Patterns
Talk by Tony Sneed and Long Le to ASP.NET Dev Group in Dallas Feb 2018.
Anthony Sneed
February 27, 2018
Tweet
Share
More Decks by Anthony Sneed
See All by Anthony Sneed
Build Web APIs Faster with .NET Core Scaffolding
tonysneed
0
91
Build Web APIs Faster with .NET Core Scaffolding
tonysneed
0
53
Follow Your IT Dreams
tonysneed
0
70
Dockerising ASP.NET Core Applications
tonysneed
1
130
Fun with Visual Studio Code
tonysneed
0
120
Other Decks in Technology
See All in Technology
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
460
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
220
使いにくいの壁を突破する
sansantech
PRO
1
130
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
210
Meshy Proプラン課金した
henjin0
0
250
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
2
330
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
150
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
130
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
190
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Webhook best practices for rock solid and resilient deployments
glaforge
1
270
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
110
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Ruling the World: When Life Gets Gamed
codingconduct
0
140
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
62
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
Typedesign – Prime Four
hannesfritz
42
2.9k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Side Projects
sachag
455
43k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
180
Making Projects Easy
brettharned
120
6.6k
Transcript
Entity Framework Core With Design Patterns Anthony Sneed with Long
Le
About Tony • Independent Consultant @ Pioneer Natural Resources •
Coding C# since v1 • Author / Instructor: DevelopMentor, Wintellect • Open Source: URF, Trackable Entities ASPNET Core, EF Core • blog.TonySneed.com • Twitter: @tonysneed
About Le • Principle Architect @ Pioneer Natural Resources •
Currently geeking out w/ MEAN & .NET Core • Open Source: URF.Core, Trackable Entities • blog.longle.io • Twitter: @lelong37
Part 1: Intro to EF Core
EF Core: Not Your Father’s EF • Re-written from the
ground up! • .NET Standard 2.0 • Cross-Platform, Containers, Cloud Friendly • Modern, Modular, Extensible • Lightweight, Performant
EF Core: What’s Hot? • Cross Platform, Container / Cloud
Friendly • Batching update statements • In-memory provider (mockless testing) • Mixing client / server query evaluation • Mixing raw SQL and LINQ expressions • Customizable conventions, migrations
EF Core: What’s Dropped? • EDMX Models, Entity SQL (vs
code-based modeling) • Mapping stored procedures to CUD operations • Many-to-Many without intermediate entity • Full support for geospatial • Built-in design tools and wizards • Table-per-type inheritance mapping (TPH supported)
EF Core vs EF 6 • EF 6 still supported,
but considered legacy • Use EF Core for new ASP.NET Core API’s • Feature-by-feature EF 6 vs Core comparison: https://docs.microsoft.com/en-us/ef/efcore-and- ef6/features
Migrate from EF6 to Core? Don’t even think about it!
EF Core 2.x: What’s New? • GroupBy query translation •
Lazy Loading • Scaffold context and entities separately* • System.Transactions support • Table-splitting, owned types, db scalar functions • Compiled queries, context pooling * Tony’s contrib :)
EF Core Power Tools • Reverse engineer • Visualize model
• Customize entity classes (Handlebars templates*) * Tony’s contrib :)
None
Part 2: Design Patterns for EF Core
Why Patterns? • Using EF directly couples your app to
EF • Newing up DbContext makes your app less testable
Repository Pattern • Repository interfaces decouple app from persistence concerns
Sample Repository public class ProductRepository : IProductRepository { private readonly
NorthwindContext _dbContext; public ProductRepository(NorthwindContext dbContext) { _dbContext = dbContext; } public async Task<Product> FindAsync(int id) { return await _dbContext.Products.FindAsync(id); } }
Marking Changes public void Insert(Product product) { // Mark Added
_dbContext.Products.Add(product); } public void Update(Product product) { // Mark Modified _dbContext.Products.Update(product); } public async Task Delete(int id) { // Mark Deleted var product = await _dbContext.Products.FindAsync(id) _dbContext.Products.Remove(product); }
Unit of Work Pattern • Save changes from multiple repositories
• Wrapped in a single transaction
Persisting Changes public interface IUnitOfWork { Task<int> SaveChangesAsync(); }
Dependency Injection • DI container responsible for supplying instances •
DI is built into ASP.NET and EF Core
Helpful Frameworks • URF: Generic Unit of Work and Repository
https://github.com/urfnet/URF.Core
Helpful Frameworks • Trackable Entities: N-Tier Support for EF Core
https://github.com/TrackableEntities/ TrackableEntities.Core
None
Thank You! Tony Sneed: @tonysneed Long Le: @lelong37 Slides: https://speakerdeck.com/tonysneed/ef-core-with-patterns
Bits: https://github.com/tonysneed/Demo.EfCore.Patterns