Mert Özen Further With Every Line

Blog

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

Series
220 posts found #dotnet
Layered Structure in ASP.NET Core Web API: The Service Layer and the Repository Debate
Backend PART 16

Layered Structure in ASP.NET Core Web API: The Service Layer and the Repository Debate

We slim down a fat controller and hand its work to IProductService. A reusable Expression projection, scoped registration, why a generic repository hurts on top of EF Core, and how interfaces help testing.

4 Nov 2026 10 min 30
DTOs and Mapping in ASP.NET Core Web API: Hand Mapping, the AutoMapper License and Mapperly
Backend PART 15

DTOs and Mapping in ASP.NET Core Web API: Hand Mapping, the AutoMapper License and Mapperly

We see the cost of returning entities directly through real errors: overposting and circular references. Request/response DTOs, hand mapping and projection, AutoMapper's 2025 license change and CVE, and a short look at Mapperly.

4 Nov 2026 10 min 32
EF Core and SQLite in ASP.NET Core Web API: DbContext, the First Migration and CRUD
Backend PART 14

EF Core and SQLite in ASP.NET Core Web API: DbContext, the First Migration and CRUD

We add a data layer to an ASP.NET Core Web API with EF Core and SQLite: EF Core 6 and 10 package versions, AppDbContext, the connection string, why DbContext is scoped, the first migration, async CRUD and the SQL in the console.

4 Nov 2026 9 min 35
Logging in ASP.NET Core: ILogger, Log Levels, Structured Logging and Serilog
Backend PART 13

Logging in ASP.NET Core: ILogger, Log Levels, Structured Logging and Serilog

We write logs with ILogger<T> in ASP.NET Core: categories, log levels, filters via appsettings and environment variables, structured logging with message templates, scopes, the LoggerMessage source generator and the Serilog version that supports net6.0.

4 Nov 2026 8 min 31
Configuration and the Options Pattern in ASP.NET Core: Provider Order, User Secrets and Validation
Backend PART 12

Configuration and the Options Pattern in ASP.NET Core: Provider Order, User Secrets and Validation

We see the order of ASP.NET Core configuration providers with real output: appsettings, environment variables, command line, user secrets. The Options pattern, IOptions vs IOptionsSnapshot vs IOptionsMonitor, and validation with ValidateOnStart.

4 Nov 2026 7 min 33
Dependency Injection in ASP.NET Core: Lifetimes and the Captive Dependency Trap
Backend PART 11

Dependency Injection in ASP.NET Core: Lifetimes and the Captive Dependency Trap

We explore dependency injection in ASP.NET Core with real output: constructor injection, singleton/scoped/transient lifetimes, captive dependencies, scope validation, IServiceProvider and the [FromServices] detail in .NET 6.

4 Nov 2026 10 min 25
ASP.NET Core Minimal APIs with .NET 6: MapGet, MapPost and How They Compare to Controllers
Backend PART 10

ASP.NET Core Minimal APIs with .NET 6: MapGet, MapPost and How They Compare to Controllers

MapGet, MapPost, MapPut and MapDelete with .NET 6 minimal APIs, parameter binding rules, Results helpers, filling in the missing validation by hand, grouping endpoints, and when to pick minimal APIs over controllers.

4 Nov 2026 8 min 32
Model Validation in ASP.NET Core: Data Annotations and FluentValidation
Backend PART 09

Model Validation in ASP.NET Core: Data Annotations and FluentValidation

Model validation with Data Annotations, ModelState and the automatic 400, customizing ValidationProblemDetails, custom attributes, IValidatableObject and FluentValidation 11.x, including culture pitfalls with Range and messages.

4 Nov 2026 8 min 34
Model Binding in ASP.NET Core: FromRoute, FromQuery, FromBody and FromHeader
Backend PART 08

Model Binding in ASP.NET Core: FromRoute, FromQuery, FromBody and FromHeader

How request data binds to action parameters from the route, query string, body, headers, forms and services, the inference rules of [ApiController], and why you get 415 and 400 errors, with real responses.

4 Nov 2026 8 min 31
Status Codes and Responses in ASP.NET Core: Ok, CreatedAtAction and ProblemDetails
Backend PART 07

Status Codes and Responses in ASP.NET Core: Ok, CreatedAtAction and ProblemDetails

Returning the right status code with ControllerBase helpers, the surprise 204 on null, CreatedAtAction and the Location header, choosing between 400/404/409, ProblemDetails and content negotiation, with real responses.

4 Nov 2026 8 min 27
Controllers and Actions in ASP.NET Core: A CRUD Skeleton with [ApiController]
Backend PART 06

Controllers and Actions in ASP.NET Core: A CRUD Skeleton with [ApiController]

The difference between ControllerBase and Controller, the four behaviors [ApiController] adds, choosing between IActionResult and ActionResult<T>, and an in-memory CRUD skeleton, all with real curl output.

4 Nov 2026 9 min 27
Routing in ASP.NET Core Web API: Attribute Routing, Route Templates and Constraints
Backend PART 05

Routing in ASP.NET Core Web API: Attribute Routing, Route Templates and Constraints

The decide-and-execute steps of endpoint routing, attribute routing and the [controller]/[action] tokens, route template parts, constraints and precedence, conflicting routes and AmbiguousMatchException.

4 Nov 2026 8 min 34
Blog Map