1. Почему Microsoft добавила атрибут DataContract к EF-сущностям?Разве Microsoft хотела, чтобы мы использовали эти объекты везде в наших приложениях?Или это только для очень простых приложений и для быстрой разработки?
Вообще говоря, плохая идея выставлять ваши EF-сущности на уровне обслуживания, потому что это вряд ли соединяет ваш уровень обслуживания и представление модели,поэтому любые изменения, внесенные в модель, напрямую влияют на ваши услуги, а это не очень хорошая идея.Кроме того, в какой-то момент вам потребуется версия вашего сервисного уровня, поэтому избегайте выставлять сущности EF на вашем сервисном уровне.
2.Если я использую POCO-объекты, я должен создать автоматически сгенерированные EF-Entities, POCO-Entities и после этого использовать какую-либо библиотеку сопоставлений между ними?Или я должен использовать только POCO-объекты во всех компонентах моего приложения?
Вы можете использовать POCO-объекты внутри вашего сервисного уровня, чтобы отделить его от любых нижележащих слоев (см. Automapper, чтобы покрыть Entity-Стоимость картографирования DTO).но вы все равно можете использовать автоматически сгенерированные EF-сущности среди данных и бизнес-уровней в вашей архитектуре.просто постарайтесь не полагаться на особенности EF вашей сгенерированной модели предметной области в других слоях, отличных от слоя данных.чтобы упростить переход на другие платформы ORM.
Если у меня уже есть свой бизнес-объект, у которого есть несколько методов, и он должен быть сопоставлен с объектом POCO, на какой уровень мне следует преобразовать объект POCOмоей сущности (например, у меня есть уровень постоянства, уровень бизнес-логики, уровень обслуживания (WCF), уровень презентатора (клиент, использование WCF), уровень пользовательского интерфейса)?Или я не должен создавать такие собственные сущности?
Сервисный уровень http://msdn.microsoft.com/en-us/library/ms978717.aspx. вы бы прозрачно использовали модель своего домена на уровне сервера (постоянство, бизнес, сервис и уровень презентаторов)вашего приложения, и единственный уровень, который потребует от вас DTO-сопоставления, это сервисный уровень, см. вопрос 1. (дополнительно, если вы используете ViewModels внутри вашего уровня презентатора - хорошая идея - вам потребуется использовать POCO-отображение вслой презентатора тоже).