У нас есть простой служебный класс для наших вызовов базы данных (легкая оболочка вокруг ADO.NET), но я думаю о создании классов для каждой базы данных / объекта. Будет ли это разумным поступком или будет только полезно, если мы будем использовать полную структуру MVC для ASP.NET?
Итак, у нас есть это:
SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);
Думаю об этом:
Person p = Person.get(id);
p.fname = "jon";
p.lname = "smith";
p.Save();
или для нового рекорда -
Person p = new Person();
p.fname = "Jon";
p.lname = "Smith";
p.Save();
p.Delete();
Было бы это умно или было бы чересчур? Я вижу преимущества повторного использования, изменения базы данных и обслуживания / удобочитаемости.
MVC никоим образом не является единственным шаблоном проектирования для Интернета, но он полезен.
На мой взгляд, использование только буквы «М» принесет дивиденды, даже если вы не сможете / не сможете принять букву «V» или «C».
Это загруженный вопрос: дизайн, управляемый данными, или дизайн, управляемый предметной областью. Для любого приложения с хорошим поведением предпочтение следует отдавать дизайну, основанному на предметной области. Отчеты или служебные приложения, как правило, лучше работают (или быстрее развиваются) с дизайном, основанным на данных.
Вы спрашиваете: «Должна ли моя компания кардинально изменить то, как мы разрабатываем наш код». Как помешанный на домене, моя внутренняя реакция - крикнуть да. Однако, судя по простоте вашего вопроса, я не уверен, что вы полностью понимаете масштаб предлагаемого вами изменения. Я думаю, тебе стоит поговорить об этом со своей командой.
Возьмите литературу, например книгу DDD Эвана или бесплатная электронная книга по фондам, и тогда вы сможете лучше понять, в каком направлении вам следует двигаться.
Спасибо за информацию, я изучу эти книги. Извините, мой вопрос был загружен / простой. Я не хотел писать слишком много, и, наверное, стоило просто спросить о модели и отсутствии модели. Проблема с моей командой заключается в том, что я здесь новичок, и они запускают много-много устаревшего очень sphagetti Classic-ASP кода, плюс они все еще развиваются таким образом, используя некоторые функции ASP.Net. (ранее ответил на это как ответ, который был удален в соответствии с правилами сообщества)
Мне кажется, что вы пытаетесь сделать то, что LINQ уже может сделать для вас. Если вы застряли в более старой структуре, в которой вы не можете это использовать, я могу предложить вам использовать Subconic (http://subsonicproject.com/) вместо того, чтобы вручную создавать все эти объекты модели вручную.
У меня был проект, в котором я попал в аналогичное затруднительное положение и на полпути перешел на дозвуковой режим с фантастическими результатами. Более быстрая разработка и НАМНОГО легче читать / использовать код.
Я тестирую Linq to SQL, когда пишу это, и это здорово. Похоже, это для простого отображения, но этого должно хватить для всего, что мне нужно. Определенно то, что нужно сгенерировать.
Обсуждаемый вами подход многими, в том числе и мной, считается хорошим! Изучение этого подхода потребует некоторых усилий, но пусть это вас не отпугнет!
А как насчет того, чтобы просто попробовать небольшой проект с LINQ to SQL? Возможно, найдите хороший справочный проект на код Google и изучите, как другие работали с ним.
Это простой инструмент, который позволит вам ознакомиться с некоторыми проблемами, возникающими при сопоставлении объектов с базами данных.
Затем вы сможете почувствовать это и решить, стоит ли это обучения.
Будут новые концепции, которые нужно понять и экспериментируйте с такими вещами, как:
customer.Orders.Count
, но они также являются причиной многих проблем. Вам нужно будет найти некоторые безопасные методы работы с ассоциациями....назвать несколько.
Для начала не беспокойтесь о наследовании и прочем, просто начните с простого и создайте простые сущности, которые сопоставляются с таблицами.
Попробуйте использовать их так же, как и ваш существующий DAL. Затем начните экспериментировать с ассоциациями.
Тогда, возможно, попробуйте придать своим сущностям больше поведения. Если вам это начинает нравиться и вы чувствуете, что вам нужно больше функций, подумайте о том, чтобы попробовать более многофункциональный ORM, такой как Скорость света или NHibernate.
Надеюсь это поможет!
Спасибо за вклад, думаю, я начну добавлять / заменять букву «М», как вы ее выразили! (ранее отвечал как ответ, который был удален согласно правилам сообщества)