Thank you daelmo for the link. Reading it reminded me how educational it can be just to be around the LLBL forum
For the sake of others that could come across this thread, here is my take on the referenced thread after reading it:
1- POCO is NOT what I thought. I thought POCO are just simple CLR objects that do not inherit any base class BUT as Frans explained in the thread:
That's the misunderstanding about POCO: you never deal with an object instantiation of your own class, you always work at runtime with an object instantiation of a different class, be it a proxy or a post-compilation created class which is your original class + all the framework goo to make it possible to use the framework class
2- The main reason most people are raising the POCO issue is the claim of vendor lock-in. Basically, people are afraid of using entities everywhere. This is something I am neither worried of nor agree on the concern of Entities-Everywhere as have been proven by MS own Entity-Framework where MS is pitching their EF as the new RecordSets/DataSets replacement (to put it simply)
3- My case was for using a DTO to simplify the communication of loaded entities between BL and UI. My entities when loaded from the DB can have so many de-normalized data that I dont want the UI to change. Instead of using some fail-safe code against the UI tampering with these entity fields, I choose to exchange all "Data" between the UI and BL using simple objects (will not call them POCO anymore as per Frans's definition).
The UI and BL can still use entities to do their own thing BUT only when they are talking to each other they exchange simple-objects
4- I find DataSets better suited for UI<==>BL communication than simple-objects because both can serve to communicate the data in a strongly-typed fashion but DataSets have great tooling support from VS