Although there are recommendations, there is no hard and fast rule. In addition, recommendations may vary depending on the architecture, size, requirements, priorities used by the ORM, etc. Cm. .
As I said, there is nothing final, following what I do in my large project.
I am using ORM NHibernate. My DAL returns Entity. My BLL receives an object and converts it to a DTO. Then the DTO is passed to the application layer. This is also not true for all cases. Send this message. I mentioned the details of why I am doing this in this answer.
For my small projects I use ORM Dapper. In this case, my DAL returns Entity. BLL accepts Entity and passes it as an application. Since Dapper does not create proxies, I do not convert objects to DTO.
It looks like you are not using ORM. The second way (transferring an object to BLL and its application) may be better for you. But you should also consider the other aspects mentioned above.
In any case mentioned above, the DAL should return a transformed object (e.g. Entity / POCO) instead of an ADO.NET object. Thus, any technological switch in the future will need to change only the DAL for how long since your interfaces are not broken.
Transferring ADO.NET objects (DataTable, DataReader) associates your DAL and the entire project with one technology. Switching technology will be difficult. On the other hand, if your DAL returns Entity (a regular C # class), you can switch the technology to DAL and your application remains unaffected. What to do in BLL is up to you based on other considerations.
Should objects in our custom types be converted to DAL before being passed to the BLL, or if the DAL passes the original type and the BLL does the conversion?
Conversion of objects must occur in DAL. The converted object must be passed to the BLL.