Кто-нибудь использует POCO Adapter для Entity Framework в производстве?
-
05-09-2019 - |
Вопрос
Читая об отсутствии постоянства и невежестве в Entity Framework, я часто натыкаюсь на Адаптер POCO.Вопрос в том, использует ли кто-нибудь это в производстве, как это происходит и каковы подводные камни?
Я рассматриваю две альтернативы для разработки приложения:используйте POCOs с этим адаптером в бизнес-логике и заставьте уровень представления использовать их или создайте уровень сервиса, преобразующий между объектами EF и DTO:(1) Объекты EF <-> Адаптер <-> Бизнес-объекты POCO <-> Презентация или (2) Объекты EF <-> Уровень обслуживания <-> DTO <-> Презентация.Первый подход кажется более чистым, но я несколько сомневаюсь в том, что POCO Adapter является не очень стандартным решением и может содержать некоторые недостатки, не очевидные прямо сейчас.
Решение
EFPocoAdapter устарел в пользу Entity Framework 4.0.В бета-версия была анонсирована менее недели назад, и вы уже можете загрузить бета-версию 1, если вы подписчик MSDN.
Больше нет причин использовать EFPocoAdapter.Я бы также посоветовал вам ознакомиться с ADO.NET Entity Framework Блог команды дизайнеров с перечнем всех функций EF 4.0 можно ознакомиться здесь.
Также взгляните на этот пост в блоге: POCO в Entity Framework:Часть 1 - Опыт.
Что касается моего опыта работы с EFPocoAdapter, я был / остаюсь доволен поддержкой POCO, отложенной загрузки и n-уровневых сценариев.Entity Framework продолжает развивать это, предоставляя, среди прочего, шаблоны T4, чего мне действительно не хватало (хотя многие предпочитают создавать свои классы POCO вручную).Другими проблемами, которые у меня были, были проблемы с сериализатором с JavaScriptSerializer, который не обрабатывает циклические ссылки, в то время как DataContractSerializer, который это делает, требует атрибутов класса / члена, которые до шаблонов T4 были невозможны с автоматически сгенерированными классами.
EFPocoAdapter всегда задумывался как своего рода промежуточная платформа для получения отзывов от сообщества и разработки набора функций для EF 4.0.Хотя это немного грубо по краям, мне удалось выполнить свои требования, хотя и после нескольких обменов мнениями с Ярославом.Это и поддержка были очень унылыми (мало людей на форумах или переполнение стека).
Другие советы
Возможно, вы захотите использовать Автоматический преобразователь.Затем вы можете написать объекты EF, объекты POCO и DTO-ы, если это необходимо.Два набора сущностей кажутся немного накладными, но когда вам нужно быть настойчивым в незнании, тогда это кажется самым простым способом с AutoMapper.
Я просто хотел бы добавить к этой теме, что я использую Entity Framework v4 с моделью POCO, созданной с использованием генератора C # POCO в рабочей среде (около шести месяцев), и она работает очень хорошо.
Есть целый несколько уловов однако при использовании их с сервисами WCF, поэтому, если вы рассматриваете возможность их предоставления через WCF, возможно, стоит собрать разумное доказательство концепции и посмотреть, создаст ли сложность графа объектов какие-либо проблемы для сериализации, использования без состояния и т.д. И т.п.