Best solution for strong typed data is using EF Core, BindingSource and BindingList (that allows sorting). Next would be to use Dapper, BindingSource and BindingList (that allows sorting).
The following is done with EF Core but could had been done with Dapper.
https://github.com/karenpayneoregon/ef-code-8-samples/tree/master/NorthWind2024StarterApp
As it is a code sample for getting started there are things that need attention but works as is.
Notes
- Uses a ComboBox is the DataGridView for Countries
- Uses a custom BindingNavigator (newer releases of .NET do not expose this)
- Uses a customer BindingList for sorting data
- Uses NuGet package FluentValidation for validation
- Uses BindingList.ListChanged event to get at changes in the DataGridView
- Avoids touching the DataGridView to get at data.