As a best practice, you definitely need to return the DTO / POCO class, which is explicitly designed as a data contract and has no save logic.
The reason is that if you pass an EntityObject, you make the assumption that the service consumer will refer to the same data context, and this violates the SOA principle with explicit boundaries. This reduces the possibility of reusing your service.
Microsoft has probably implemented DataContract in EntityObject to support some of its WCF-based database access tools, such as RIA. INotifyPropertyChanged is designed to support WPF binding and is not associated with WCF contracts or data.
Guy starbuck
source share