У меня был клиент, который попросил совета при создании простого приложения WPF LOB на днях. Они в основном хотят приложение CRUD для базы данных, основной целью которого является учебный проект WPF.
Я также показал им Linq To SQL, и они были впечатлены.
Затем я объяснил, что, вероятно, не очень хорошая идея использовать эти объекты L2S напрямую из их кода BLL или UI. Вместо этого они должны рассмотреть что-то вроде шаблона Repository.
В этот момент я уже мог чувствовать сверхинженерные звонки тревоги, звучащие в их головах (и в некоторой степени и в моих). Им действительно нужна вся эта сложность для простого приложения CRUD? (Хорошо, он эффективно функционирует как учебный проект WPF для них, но давайте представим, что он превращается в «настоящее» приложение).
- Считаете ли вы когда-либо приемлемым использование сущностей L2S во всем приложении?
- Насколько сложно (исходя из опыта) рефакторинга использовать другую среду персистентности позже?
На мой взгляд, если уровень пользовательского интерфейса использует объекты L2S в качестве простого POCO (не затрагивая какие-либо специфические методы L2S), то в дальнейшем это будет действительно легко выполнить рефакторингом в случае необходимости.
Им нужен способ централизовать запросы L2S, поэтому необходим какой-то способ управления этим, даже если они действительно используют объекты L2S напрямую. Таким образом, мы уже продвигаемся к некоторым аспектам DAL / DAO / Repository.
Основная проблема с Repo, которую я вижу, - это проблема отображения между объектами L2S и некоторой моделью предметной области. И стоит ли это того? Вы получаете довольно много «бесплатно» на объектах L2S, которые, я думаю, будет трудно использовать, когда вы переходите на другую модель.
Мысли