Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
186 posts found
Query and Mapping with Dapper: How Do Columns Map to Properties?
Database PART 02

Query and Mapping with Dapper: How Do Columns Map to Properties?

We look at how Query<T> maps columns to properties: case-insensitive matching, silently skipped columns, NULL and default values, MatchNamesWithUnderscores and its cache trap, dynamic results and constructor mapping for records.

6 Nov 2026 10 min 39
What Is Dapper? The Thin Layer on Top of ADO.NET and Your First Query
Database PART 01

What Is Dapper? The Thin Layer on Top of ADO.NET and Your First Query

We meet Dapper as a set of extension methods on top of ADO.NET: what micro-ORM means, when to pick it over EF Core, setting up .NET 10 + Dapper 2.1.89 + SQLite, the first Query and a short history from 1.x to Dapper.AOT.

6 Nov 2026 11 min 48
What's New in EF Core 10: Named Query Filters, LeftJoin and Complex Types in JSON
Database PART 28

What's New in EF Core 10: Named Query Filters, LeftJoin and Complex Types in JSON

Named query filters and IgnoreQueryFilters(["..."]), LeftJoin/RightJoin, ExecuteUpdateAsync with a regular lambda, complex types and ComplexCollection mapped to JSON, padded parameterized collections, vector search with SqlVector and the SQLite DateTimeOffset breaking change in EF Core 10 LTS.

5 Nov 2026 9 min 70
What's New in EF Core 9: UseSeeding, Migration Locking and PendingModelChangesWarning
Database PART 27

What's New in EF Core 9: UseSeeding, Migration Locking and PendingModelChangesWarning

PendingModelChangesWarning catching a missing migration at Migrate time, the HasData and DateTime.Now trap, UseSeeding/UseAsyncSeeding, migration locking with __EFMigrationsLock, auto-discovered compiled models and EFOptimizeContext, and ExecuteUpdate with complex types in EF Core 9.

5 Nov 2026 9 min 81
What's New in EF Core 8: Complex Types, Primitive Collections and SqlQuery<T>
Database PART 26

What's New in EF Core 8: Complex Types, Primitive Collections and SqlQuery<T>

Primitive collections and json_each, ComplexProperty for value objects, SqlQuery<T> for non-entity types, no-tracking lazy loading, JSON on SQLite and HierarchyId in EF Core 8 LTS, plus Contains moving to OPENJSON and UseCompatibilityLevel(120).

5 Nov 2026 10 min 64
What's New in EF Core 7: ExecuteUpdate, ExecuteDelete, JSON Columns and TPC
Database PART 25

What's New in EF Core 7: ExecuteUpdate, ExecuteDelete, JSON Columns and TPC

ExecuteUpdate/ExecuteDelete, ToJson for owned types in JSON columns, TPC inheritance, IMaterializationInterceptor, FromSql and SqlQuery<int> in EF Core 7, plus moving from EF Core 6 with breaking changes like Encrypt=True and HasTrigger.

5 Nov 2026 10 min 71
Legacy Projects: Moving from EF Core 3.1 and EF Core 5 to EF Core 6
Database PART 24

Legacy Projects: Moving from EF Core 3.1 and EF Core 5 to EF Core 6

The end of client evaluation in EF Core 3.0, FromSql split into FromSqlRaw/FromSqlInterpolated, many-to-many, filtered include and split queries in EF Core 5, how Nullable affects migrations when moving to EF Core 6, and support status.

5 Nov 2026 11 min 68
EF Core and Architecture: Repositories, the Read Side of CQRS and Moving to Dapper
Database PART 23

EF Core and Architecture: Repositories, the Read Side of CQRS and Moving to Dapper

With real SQL we see how a generic repository silently moves the WHERE into memory, and discuss DbContext already being a unit of work. We finish the core block with an aggregate-specific repository, projections on the CQRS read side and Dapper sharing the same connection and transaction.

5 Nov 2026 10 min 69
Testing with EF Core: SQLite In-Memory and InMemory Provider Pitfalls
Database PART 22

Testing with EF Core: SQLite In-Memory and InMemory Provider Pitfalls

With real test output we see how the InMemory provider silently lets unique indexes, foreign keys and raw SQL slip through, and build realistic tests with SQLite in-memory. We cover the false green of asserting on the same context and the debate about abstracting DbContext, using the EF documentation's guidance.

5 Nov 2026 10 min 67
EF Core Interceptors and Events: Audit Fields and Slow Query Logging
Database PART 21

EF Core Interceptors and Events: Audit Fields and Slow Query Logging

We fill CreatedAt and UpdatedAt automatically with a SaveChangesInterceptor, log queries over a threshold with a DbCommandInterceptor, and watch the change tracker live through SavingChanges and StateChanged events. We also see why nothing runs when you forget the async override.

5 Nov 2026 10 min 73
Owned Types and Value Converters in EF Core: Addresses, Enums and Strongly Typed Ids
Database PART 20

Owned Types and Value Converters in EF Core: Addresses, Enums and Strongly Typed Ids

We tie identity-less values to their owner with OwnsOne and OwnsMany, store enums as text and wrap Ids in their own types. With real output we see a change lost for lack of a value comparer and an OwnsMany pitfall specific to SQLite.

5 Nov 2026 11 min 63
Inheritance Mapping in EF Core: TPH, TPT and When to Choose Which
Database PART 19

Inheritance Mapping in EF Core: TPH, TPT and When to Choose Which

How does EF Core turn a class hierarchy into tables? We compare TPH with its discriminator column and TPT with a table per type using real SQL output, and look at silent pitfalls like a subclass missing from the model.

5 Nov 2026 12 min 73
Blog Map