The link may help you. It's not about azure per say.
https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles
About Transactions and data persistence, it's all records in a transaction scope are persistence to the database, or all records are rolled back if one record in the transaction scope is not persisted to the database, which prevents orphaned records being persisted. EF does transactions in data persistence automatically where warranted.
I don't think the code you have presented is optimal for scalability or speed for the following reasons:
1) Async is not being used.
2) Dependency injection is not being used, like on the connectionstring
3) Interface is not being used implementing loose coupling.
4) A persistence design pattern is not being used, like the generic repository pattern with Dapper or the Data Access Object Pattern.
5) No Service Layer is being used making the calls to DAL objects for CRUD operations used by the client.
Yes, I also start with the backend, the DAL before I come to the BLL and PL. The Service Layer and DAL should not care what layers and objects above them use the SL and DAL or what type of project uses them Desktop or Web.
https://exceptionnotfound.net/using-dapper-asynchronously-in-asp-net-core-2-1/
The link on Dapper is using the generic repository pattern. There is nothing wrong with the repository, a domain pattern, when used properly in the domain. Repository pattern is not a data persistence pattern. That's why I use the DAO pattern for CRUD.
You can use Core in ASP.NET and Windows Desktop solutions, and it should be the coding path you are moving towards.
It does not matter that you are using ASP.NET Core or Windows Desktop, becuase writing clean code applies to both, even for non Core solutions
https://ardalis.com/new-is-glue/
Example solution on GitHub.
Proper usage of DTO pattern is being shown. All DTO(s) are in the Entities project, and all projects that need to know about the DTO(s) have reference to Entities.
https://github.com/darnold924/PublishingCompany
The persistence model objects used by Dapper don't travel. The DTO(s) travel.