Re[4]: Модель данных
От: vdimas Россия  
Дата: 30.08.03 03:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Твои предложения по представлению нереляционных данных.

V>>Иерархическая сруктура в памяти.

AVK>А XML DOM что, не иерархическая? Зачем велосипеды то изобретать?

А затем, что бы можно было подавать произвольную структуру в качестве источника данных. Если говоришь, что знаешь НЕТ, то напомню, что биндинг можно выполнять к произвольным публичным свойствам. И для этого не надо писать МОРЕ РУКОПИСНОГО ТЕКСТА, т.к. все средства для поддержки биндига уже есть. Указваешь просто объект и имя свойства. Для НЕТ не существует разницы, прибиндился ты к рекорду или к любой другой структуре. Для тебя это будет один и тот же код — одна строчка. Имена свойств (в случае рекордсета — это имена полей) беруться из шаблона.
Предположим, что мы имеем отчет, который выводит простой список телефонов. В нем всего 2 поля: (FullName, Phone).
Так вот, ты НЕ МЕНЯЯ НИЧЕГО можешь подать туда рекордсет из базы, или же свою структуру:
rpt.DataSource=new PhoneListItem[] { new PhoneListItem("Вася", "11-11-11"), new PhoneListItem("Петя", "22-22-22") };
Это, конечно, вырожденный пример, но показывает суть. Мы (приложение) сможем формировать произвольную структуру из произвольных классов в памяти, главное чтобы имена полей на отчете соответствовали публичным свойствам объектов в этой структуре (впрочем, это верно и для источника — рекордсета).

AVK>>>А зачем много форматов?

V>>Затем, что много ситуаций. Но как минимум 2 формата: бинарный и XML поддерживать надо.
AVK>Зачем? чтобы писать две версии генератора для разных форматов?
Ну, ЧУДАК ЧЕЛОВЕК!!!! Это мы .NET знаем?
Да в одной строке сериализуем модель отчета как XML, а в другой — как Binary!!! И считываем аналогично — по одной строке на формат — .NET все сама делает.


V>>IEnumerable, IDictionary, IDataRecord и т.д.

AVK>И т.д. там мало совсем.
а мне только IEnumerable достаточно!!! (хотя, можно подняться на "ступенечку", и ограничиться ICollection).

V>>>> Рефлекшен легко позволит это сделать.На любой внешний источник данных может "навешиваться" адаптер, приводящие данные к удобному внутреннему виду.

AVK>>>Это слишком сложно имхо.
Это биндинг, это одна строчка.

AVK>Не рассказывай мне что такое дотнет, я это хорошо представляю. Я вижу другое — море рукописных алгоритмов, которых можно избежать.

Мы их уже избежали.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.