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