Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как сделать класс оболочку на таблицей БД


Автор: compaq 6.1.2010, 11:08
Есть база данных, в ней есть несколько таблиц, нужно написать класс оболочку с возможностью синхронизации для работы с этими таблица. В каждой таблице содержатся данные за определенный интервал времени, к примеру, час, сутки, неделя а так же данные для конкретного объекта к примеру Иванов, Петров, Сидоров . Задача состоит в том, что код обработки не должен знать, какой временной интервал и какой конкретно оббьет представлен данным классом обёрткой. То есть я в конструкторе своего класса оболочки я передаю временной интервал, и конкретный обьект (к примеру Сидоров с временным интервалом час) он создаёт мне экземпляр класса с нужными мне параметрами и подписывается на синхронизацию данных.
Вопрос вот в чём.
1)Как считать большой оббьем данных из БД при первоначальной инициации.
2)В какой структуре данных их лучше хранить List, DataSet. Нужно представить данные как свойства класса.

Автор: mrbrooks 6.1.2010, 17:42
Цитата(compaq @  6.1.2010,  11:08 Найти цитируемый пост)
1)Как считать большой оббьем данных из БД при первоначальной инициации.

обычно применяют подход называемый Paging.
Цитата(compaq @  6.1.2010,  11:08 Найти цитируемый пост)
2)В какой структуре данных их лучше хранить List, DataSet. Нужно представить данные как свойства класса. 

в данном случае я бы остановился на DataSet

Автор: Zakonnic 6.1.2010, 21:29
Из описания проблемы лично я ничего не понял. Как считать данные? Селектом, конечно же  smile  Но все таки предположу, что штука, которая вам нужна,называется ORM (Object-relational mapper). Рекомендую простой и удобный BLToolkit, на его сайте есть несколько примеров. Он позволяет получать коллекции объектов вместо таблицы записей, соответственно поля таблицы будут полями (свойствами) класса.

Автор: compaq 8.1.2010, 16:58
Спасибо за подсказку про ORM я попытался разобраться с  Entitity Framework только я не уверен что с помощью него можно сделать нужные мне вещи.
Попробую перефразировать вопрос. 
К примеру у меня есть четыре таблицы (Table1, Table2, Table3, Table4).
Нужно сделать класс оболочку который бы скрывал эти таблицы и выбранные данные от бизнес логики. То есть вот так 

Код

ClassWrapper wrap = new ClassWrapper (Table1, Ivanov)


wrap инкапсулирует таблицу1 и из таблицы1 берутся данные только по Иванову
Код


ClassWrapper wrap = new ClassWrapper (Table4, Sidorov)


wrap инкапсулирует таблицу4 и из таблицы4 берутся данные только по Сидорову.

На сколько я понял такое сделать в Entitity Framework нельзя? Если я ошибаюсь прошу киньте ссылку или пример как такое можно сделать.

Автор: thomas 9.1.2010, 16:33
compaq, 
Приветствую.
Из вашей постановки задачи ничего не понял.
Для полноты понимания нужны :
-описания таблиц и данных, которые в них хранятся;
-какие задачи у приложения, что оно должно делать с данными?
тогда можно будут что-то конкретное подсказать.

Можете написать в личку.

А так, на вскидку, могу казать следующее:
- делаем статический класс, который описывает необходимый обьект;
- создаем коллекцию этих классов;
- используем LINQ to Object для поиска нужных обьектов в коллекции.

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


Автор: compaq 9.1.2010, 19:26
Всем спасибо за помощь. Вопрос решён. Буду делать собственный класс оболочку. По тому что EF имхо в моём случае всё же не совсем подходит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)