У меня есть проблема, которую я не могу решить без каких-либо советов. Я разрабатываю приложение ASP.NET MVC, и я использую ADO.NET EF для подключения к базе данных. Моя проблема заключается в том, что я не знаю, должна ли бизнес-логика моего приложения использовать объекты, созданные EF, или я должен создать еще один уровень абстракции и отдельные объекты EF из объектов моей бизнес-логики (и разработать некоторые конвертеры между этими типами объектов). Или, может быть, я совершенно неправ, и я должен делать это по-другому? Как? Какое решение было бы лучшей практикой?ASP.NET MVC и ADO.NET Entity Framework
ответ
Это абсолютно зависит от вашего приложения, его сферы действия и его требований. Представление слоев абстракции только ради слоев означает введение сложности и косвенности, где часто это никуда не дает. Для чрезмерного использования многоуровневой архитектуры в настоящее время вводится термин Lasagna Software - замена печально известного Spaghetti Software.
Чтобы это было ясно, я не предлагаю против слоев абстракции. Их использование очень сильно зависит от ваших конкретных требований.
Я бы начал с простой архитектуры и добавил слои, необходимые для обеспечения возможности тестирования и ремонтопригодности. Текущая версия Entity Framework (4,1 на момент написания статьи) позволяет работать с Pocos и DbContext
в значительной степени напоминает Repository и единицы работы моделей. Эти готовые функции могут быть достаточными для запуска в большинстве случаев.
Я занимался такими ситуациями, имея отдельные проекты для классов Data и классов Model.
Классы данных будут созданы с помощью модели ADO.net, тогда вы можете использовать шаблон репозитория для подключения к контексту ADO.net, получить классы данных и использовать что-то вроде http://automapper.codeplex.com/ для сопоставления класса данных к бизнес-модели.
Это позволит вам использовать валидацию MVC, такую как Required, Regex и т. Д. На моделях, и избегать возиться с классами Data и проходить только по Модели.
В целом, я считаю, что лучше всего разместить бизнес-логику как в модели домена, так и на сервисном уровне. Логика в модели домена предпочтительнее, поскольку ее легче протестировать, но не вся логика легко реализуется таким образом. Например. когда операция включает в себя многие объекты домена, вы не всегда можете разумно разместить ее в одном из них без последствий для производительности и других проблем.
Здесь POCO вступает в игру. Вы можете создавать общие POCO из своей модели данных и использовать их в своем бизнес-слое. Затем EF создает POCO и отслеживает их.
Идея заключается в том, что ваш ПОКО являются только юридическими лицами, а не EF объектами (хотя EF делает, за кулисы создания проксирования версии вашего ПОК в)
- 1. ASP.NET MVC и ADO.NET Entity Framework проверка клиентской
- 2. Проверка правильности практики в ASP.NET MVC и ADO.NET Entity Framework
- 3. ADO.Net Entity Framework/Linq
- 4. Entity Framework vs. ADO.NET
- 5. ASP.NET MVC & Entity Framework
- 6. Лучше всего для ASP.NET MVC, Entity Framework или ADO.NET?
- 7. Сильно типизированный ASP.NET MVC с платформой Entity Framework ADO.NET
- 8. ASP.Net MVC Entity Framework и отношения
- 9. TDD и ADO.NET Entity Framework
- 10. ADO.NET Entity Framework отсутствует
- 11. ADO.NET Entity Framework Отношения
- 12. ADO.NET Entity Framework
- 13. Преобразование Entity Framework в ADO.NET
- 14. ASP.NET MVC Entity Framework ObjectContext
- 15. ASP.NET MVC 4 | Entity Framework
- 16. ADO.NET Entity framework model Performance
- 17. ASP.NET Identity без Entity Framework
- 18. Entity Framework с ASP.NET MVC
- 19. ASP.Net MVC Entity Framework Отношения
- 20. SaveChanges не работает с ADO.NET Entity Framework
- 21. ASP.NET, MVC, Entity Framework и понимание моделей
- 22. Архитектура Asp.Net MVC и Entity Framework
- 23. Проблемы ASP.NET vNext MVC и Entity Framework
- 24. Перемещение с ADO.NET на ADO.NET Entity Framework
- 25. ADO.NET Entity Framework vs NHibernate
- 26. ADO.Net Entity Framework: Что это?
- 27. Ado.net Entity Framework debug visualiser
- 28. dlinq versus ADO.NET Entity Framework
- 29. ADO.Net entity framework SQL loginPermissions
- 30. ADO.Net Entity Framework Пользовательского Entity Вопрос
Спасибо за ваш answear. ваш пост просто пнул меня и сказал: «У вас широко открыты глаза» :) – TrN
С удовольствием! Я знаю, как быстро можно застрять в аналитическом параличе ... –