Что лучше создавать классы модели или придерживаться общей базы данных утилиты класса?

голоса
5

У нас есть простой класс полезности в доме для наших обращений к базе данных (светло-обертку вокруг 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();

Будет ли это быть умным, или было бы излишним? Я могу видеть выгоду для повторного использования, изменения базы данных, а также техническое обслуживание / читаемость.

Задан 05/08/2008 в 21:10
источник пользователем
На других языках...                            


4 ответов

голоса
8

Этот вопрос загружается, управляемых данными проектирования против домена Driven Design. Для любого приложения, имеющей хорошее количество поведения, то домен привода дизайн должен быть предпочтительным. Отчетность, или коммунальные приложения, как правило, работают лучше (или быстрее разработать) с данными приводимого дизайна.

То , что вы спрашиваете, «моя компания должна сделать фундаментальный сдвиг в том , как мы создаем наш код». В доменном-урод, моя реакция кишка кричать да . Однако, простой характер вашего вопроса, то я не уверен , что вы в полной мере понять масштабы изменения вы предлагаете. Я думаю , что вы должны говорить больше вашей команды об этом.

Получить некоторую литературу, такие как DDD Эвана книги, или бесплатно фундаменты книгу , и тогда вы будете в лучшем положении , чтобы судить , в каком направлении следует идти.

Ответил 05/08/2008 в 21:28
источник пользователем

голоса
2

Подход вы обсуждаете считаются хорошей многим фолком, включая меня! Изучение этого подхода потребует некоторых усилий, но не позволяйте этому положить вас!

А как насчет просто пробуя небольшой проект с помощью LINQ к SQL ? Возможно найти хороший справочный проект на Google Code , и изучить , как другие работали с ним.

Это простой инструмент, и позволит вам ознакомиться с некоторыми из проблем, которые возникают с объектами отображения с базами данных.

После этого вы сможете получить чувство для него , и решить , стоит ли это кривое обучения.

Там будут новые концепции , чтобы понять и экспериментировать с, такие вещи , как:

  • Единица работы : При выполнении Сохранить и Удалить и т.д., ОРМ , как правило, не делать это немедленно, в то время как на основе набора записей DAL воли. Это может быть удивительно , так что вам нужно , чтобы узнать немного об этом. Читайте на единицу работы шаблона , чтобы получить понимание этого.
  • Массовые операции являются проблемой с OR / M. Читатель данных может эффективно перебирать тысячи строк, но с ORM вы должны быть осторожны при работе с большими партиями объектов. Опять же , один , чтобы читать дальше.
  • Ассоциации , кажется , здорово , когда можно делать такие вещи , как , customer.Orders.Countно они также являются причиной многих проблем. Вам нужно найти некоторые безопасные методы , чтобы следовать при работе с ассоциациями.

...назвать несколько.

Во-первых, не беспокойтесь о наследовании и прочее, просто начать с простого и иметь простые объекты, которые сопоставляются с таблицами.

Попробуйте использовать их таким же образом, вы бы использовать существующий DAL. Затем начинают экспериментировать с ассоциациями.

Тогда , возможно , попытаться положить больше поведение ваших лиц. Если вы начинаете любить это, и чувствовать , что вам нужно больше возможностей, пытаясь рассмотреть из более навороченный ОРМ как Lightspeed или NHibernate .

Надеюсь это поможет!

Ответил 03/10/2008 в 11:07
источник пользователем

голоса
2

Ни в коем случае MVC единственный шаблон дизайна для веб, но это полезно один.

Принятие только «М» будет выплачивать дивиденды, на мой взгляд, даже если вы не можете / не принять «V» или «C».

Ответил 05/08/2008 в 21:13
источник пользователем

голоса
0

Для меня это выглядит , как вы пытаетесь сделать то , что LINQ уже может сделать для вас. Если вы застряли в старой структуре , в которой вы не можете использовать это, я мог бы предположить , что вы используете Subconic ( http://subsonicproject.com/ ) вместо того , чтобы вручную создать все эти объекты модели вручную.

У меня был проект, где я был в подобном затруднительном положении и изменено на дозвуковых полпути с фантастическими результатами. Quicker развития и гораздо проще для чтения / использование кода.

Ответил 26/09/2008 в 15:41
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more