Ich glaube, dass wir hier 2 Definitionen vermischen, die nichts miteinander zu tun haben.
DTO oder Data Transfer Object ist ein Entwurfsmuster, mit dem man Daten zwischen Schichten übertragen kann, und auch sie haben kein Verhalten. Martin Fowler erklärt dies sehr gut unter: http://www.martinfowler.com/eaaCatalog/dataTransferObject.html
Auf der anderen Seite haben wir POCO oder Plain Old CLR Object. Aber um über POCO zu sprechen, müssen wir wissen, wo es angefangen hat, nämlich bei POJO, oder Plain Old Java Object. Martin Fowler hat mit zwei Partnern den Begriff geprägt und erklärt ihn hier: http://www.martinfowler.com/bliki/POJO.html
So können POCOs Verhalten und alles was Sie wollen haben. Es sind die gleichen allgemeinen Klassen, die Sie in Ihrer täglichen Basis schreiben, sie haben ihnen nur diesen Namen gegeben, um sie kurz und leicht zu merken.
Als Antwort auf Ihre zweite Frage denke ich, dass der beste Ansatz und derjenige, für den ich mich immer entscheide, darin besteht, DTOs vom Busines Layer an alles zu senden, was diesen nutzt (z.B.: Ihre Dienste, Website, Desktop-App, mobile App, etc.). Das liegt daran, dass sie kein Verhalten haben und in den meisten Fällen nicht viel mehr als nur Eigenschaften, so dass sie leichtgewichtig und ideal für die Verwendung in Diensten sind und natürlich keine sensiblen Daten aus Ihrem Unternehmen preisgeben.
Das heißt, wenn Sie planen, DTO zu verwenden, kann ich Ihnen empfehlen, EntitiesToDTOs, ein Entity Framework DTO-Generator, dass ich gerade vor kurzem bei CodePlex veröffentlicht, es ist frei und Open Source herunterladen. Gehen Sie zu http://entitiestodtos.codeplex.com