commit 7ca70d4
Author: Arvind Rathee <hello@akrathee.dev>
Date: May 1, 2026
Day 1 of learning .NET as a React dev
First impressions of C#, ASP.NET Core, and EF Core from someone who's spent five years in TypeScript.
2 min read · backend · #dotnet #learning #backend
part of series: dotnet diary →
I've decided to learn .NET — properly, not the "I followed a CRUD tutorial once" kind of properly — and I'm going to log it here as I go.
Day 1 was: install the SDK, scaffold a Web API, get a Hello, world endpoint up.
what felt familiar
- Strong typing. Coming from TypeScript, C#'s type system is friendly. I've already typed
interfaceinstead ofrecordonce, but the muscle memory transfers fast. - Async/await. Same syntax, similar rules.
- DI containers. I've used them in Angular and Nest; ASP.NET Core's built-in DI feels like a tighter version of those.
The first endpoint is suspiciously short:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", (string? name) => $"Hello, {name ?? "world"}!");
app.Run();what felt foreign
csprojfiles. Coming frompackage.json, I miss having scripts and deps in one place.- The C# ecosystem's opinion about structure. Frontend is a wild west; .NET projects have a clearer "this is where things go" attitude. Refreshing, occasionally constraining.
- Solutions vs projects. Took me ten minutes to realize a
.slnis just a multi-project workspace.
the simplest endpoint, two ways
Here's the difference between scaffolded controller-style routing and a minimal API endpoint:
- Controller (verbose)- [ApiController]- [Route("[controller]")]- public class HelloController : ControllerBase {- [HttpGet]- public string Get() => "Hello, world";- }
+ Minimal API+ var app = WebApplication.Create(args);+ app.MapGet("/hello", () => "Hello, world");+ app.Run();
The minimal API is closer to the Express / Fastify mental model I already have, so I'm starting there and graduating to controllers when the file grows past one screen.
next
Tomorrow: EF Core and a real database (SQLite to start). I want to feel migrations end-to-end before I commit to a stack for my next side project.
If you're a .NET person and have one thing you wish someone told you on day one, my inbox is open.
comments
$ git log --comments → Discussions not yet wired. Configure Giscus env vars to enable.