Start here. This is the direct spoken answer to practice first.
Why this question matters
Imports are a strong real-world test because they combine database constraints, EF Core memory behavior, validation, progress, and retry safety.
I would process the file in batches instead of loading everything into memory. Each row needs validation, normalization, and a stable identity such as an external id or natural key. EF Core can save batches with bounded SaveChanges calls, then clear the change tracker or use a fresh context per batch to avoid memory growth. The import needs a status record so users can see progress and failures.