Дизайн класса при работе с набором данных - PullRequest
0 голосов
/ 26 апреля 2010

Если вам нужно извлечь данные из базы данных и передать этот набор данных клиенту, а затем разрешить пользователю манипулировать данными различными способами, прежде чем снова обновлять базу данных, каков хороший дизайн класса для этого, если таблицы данных не будет отношения 1: 1 с объектами класса?

Вот некоторые, которые я придумал:

  1. Просто манипулируйте самим DataSet на клиенте и затем отправляйте его обратно в базу данных, как есть. Это будет работать, хотя, очевидно, код будет очень грязным и не очень хорошо структурированным.

  2. То же, что и # 1, но оберните код набора данных вокруг классов. Я имею в виду, что у вас может быть класс, который принимает набор данных или таблицу данных в своем конструкторе, а затем предоставляет открытые методы и свойства для упрощения кода. Внутри этих методов и свойств он будет читать или манипулировать набором данных. После этого будет легко обновить базу данных, поскольку у вас уже есть обновленный набор данных.

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

Есть ли хорошие ресурсы, где я могу найти информацию об этом?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2010

Существуют инструменты, которые делают это автоматически для вас, такие как nHibernate, или структура сущностей.

Чем больше проект - тем лучше работать с классами. (переместите данные в наш собственный код или один из указанных выше инструментов)

для небольших приложений вы можете остаться с наборами данных.

0 голосов
/ 26 апреля 2010

Когда мне нужно смоделировать простые вещи, перенести их в память и манипулировать ими, я обычно создаю классы, которые представляют каждую таблицу в базе данных, то есть таблицу person, класс Person.

С некоторым кодом вы можете использовать подобное решение, но оно все еще «грязное». Я открываю для себя силу ORM (объектно-реляционные отображения), и вы можете взглянуть на NHibernate, Fluent Hibernate, среди других.

...