Re[4]: Как я зол!!! Silverlight и DataTable
От: bober_maniac Россия http://bober-maniac.livejournal.com/
Дата: 21.11.10 14:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, bober_maniac, Вы писали:


_>>Здравствуйте, Аноним, Вы писали:


А>>>Если выбирать между ObservableCollection<Dictionary<string,object>> и System.Reflection.Emit, то что выбрать?


А>>>В Emit-е в етот ихний «ассемблер» надо вникать, а зато O.C.<Dict<>> кмк кучу всего надо учесть, что, потенциально, таит тонны граблей.


А>>>Склоняюсь к emit-у, но До этого склонялся к DataTable и вона чо вышло. Кто знает оба подхода (ObCo и Emit) не могли б Вы сделать для меня обоснованный выбор?


_>>ObservableCollection<IDictionary<string, object>> с собственной реализацией IDictionary. Тогда никаких граблей, определяете только то, что вам нужно.


А>Грабли как раз в том что я не знаю заранее что «оно само сделаит» из того что мне нужно, а что определять надо. Т.е. я думаю что оно и так должно быть (само собой), а его вдруг не будет (потому что не определено).


Именно поэтому IDictionary, а не Dictionary.
Re[5]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 21.11.10 14:18
Оценка:
Здравствуйте, bober_maniac, Вы писали:

А>>Грабли как раз в том что я не знаю заранее что «оно само сделаит» из того что мне нужно, а что определять надо. Т.е. я думаю что оно и так должно быть (само собой), а его вдруг не будет (потому что не определено).


_>Именно поэтому IDictionary, а не Dictionary.


эээ.. Интеррресно интеррресно.. Т.е. реализую этот ифейс и всё — можно будет про эту деталь проекта забыть навсегда и пользоваться направо и налево ничего не правя в коде?
Мне надо чтоб работало и не парило моск, потому что задача у меня другая — ну там прорва бизнес-логики и всякие такие мелочи прорабатывать некогда.
Re[6]: Как я зол!!! Silverlight и DataTable
От: bober_maniac Россия http://bober-maniac.livejournal.com/
Дата: 21.11.10 14:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, bober_maniac, Вы писали:


А>>>Грабли как раз в том что я не знаю заранее что «оно само сделаит» из того что мне нужно, а что определять надо. Т.е. я думаю что оно и так должно быть (само собой), а его вдруг не будет (потому что не определено).


_>>Именно поэтому IDictionary, а не Dictionary.


А>эээ.. Интеррресно интеррресно.. Т.е. реализую этот ифейс и всё — можно будет про эту деталь проекта забыть навсегда и пользоваться направо и налево ничего не правя в коде?

А>Мне надо чтоб работало и не парило моск, потому что задача у меня другая — ну там прорва бизнес-логики и всякие такие мелочи прорабатывать некогда.

Вы реализуете слой конверсии из ваших объектов с кучей полей в некий MyDictionary : IDictionary<string, object> и радуетесь жизни. Те методы IDictionary, которые вам не нужны, просто не реализуете.
Re[6]: Как я зол!!! Silverlight и DataTable
От: notacat  
Дата: 21.11.10 18:37
Оценка:
А>В DbDataReader:

А>
А>DbCommand.ExecuteReader();
А>

Это со стороны сервера, а на клиент-то вы в каком виде собираетесь отдавать? Советую сначала об этом подумать, а потом уже про датагрид
Re[7]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 21.11.10 21:08
Оценка:
Здравствуйте, bober_maniac, Вы писали:

_>Вы реализуете слой конверсии из ваших объектов с кучей полей в некий MyDictionary : IDictionary<string, object> и радуетесь жизни. Те методы IDictionary, которые вам не нужны, просто не реализуете.


Можно пример?

Исходные данные: Есть поток данных вида

{
1. Имя поля
2. Тип
3. Значение
} повторить 1 тире N раз

. Этот поток образует прямоугольную таблицу.
Re[7]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 21.11.10 21:13
Оценка:
Здравствуйте, notacat, Вы писали:

А>>В DbDataReader:


А>>
А>>DbCommand.ExecuteReader();
А>>

N>Это со стороны сервера, а на клиент-то вы в каком виде собираетесь отдавать? Советую сначала об этом подумать, а потом уже про датагрид

В соседней ветке -- "DataTable vs Самопальный что-то там" -- это описано возможно более подробно.

Есть два рабочих проверенных варианта: 1. Передача DataSet/DataTable средствами WCF и 2. Преобразование DataTable/DataSet в свой тип-коллекцию и передача опять-таки средствами WCF (тут на самом деле я из DbDataReader читаю и строю этот тип-коллекцию минуя DataT/DataS)
Re[8]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 21.11.10 21:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, bober_maniac, Вы писали:


_>>Вы реализуете слой конверсии из ваших объектов с кучей полей в некий MyDictionary : IDictionary<string, object> и радуетесь жизни. Те методы IDictionary, которые вам не нужны, просто не реализуете.


А>Можно пример?


А>Исходные данные: Есть поток данных вида


А>{

А>1. Имя поля
А>2. Тип
А>3. Значение
А>} повторить 1 тире N раз

А>. Этот поток образует прямоугольную таблицу.\


PS. я нарыл в инете пример, в каком-то блоге, копипаст, Рун. Открывается табличка с другим количеством колонок, без заголовков (или с заголовками которые в моем коде не упоминались), с пустыми ячейками. Вот.
Re[8]: Как я зол!!! Silverlight и DataTable
От: notacat  
Дата: 21.11.10 21:35
Оценка:
А>Есть два рабочих проверенных варианта: 1. Передача DataSet/DataTable средствами WCF и 2. Преобразование DataTable/DataSet в свой тип-коллекцию и передача опять-таки средствами WCF (тут на самом деле я из DbDataReader читаю и строю этот тип-коллекцию минуя DataT/DataS)
Разбирать сериализованные DataSet/DataTable на клиенте — это для вас будут лишние сложности. Лучше уж тогда свои объекты и коллекции.
Re[9]: Как я зол!!! Silverlight и DataTable
От: notacat  
Дата: 21.11.10 21:38
Оценка:
зыЖ это я говорю как человек, который этих устриц ел
Re[9]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 22.11.10 06:52
Оценка:
Здравствуйте, notacat, Вы писали:

А>>Есть два рабочих проверенных варианта: 1. Передача DataSet/DataTable средствами WCF и 2. Преобразование DataTable/DataSet в свой тип-коллекцию и передача опять-таки средствами WCF (тут на самом деле я из DbDataReader читаю и строю этот тип-коллекцию минуя DataT/DataS)

N>Разбирать сериализованные DataSet/DataTable на клиенте — это для вас будут лишние сложности. Лучше уж тогда свои объекты и коллекции.

Это воще не проблема.. т.к. Silverlight (а мне надо прикрутить именно к нему) просто не умеет DataTable/DataSet ваобще
Re[5]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 22.11.10 10:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, notacat, Вы писали:


N>>Если совсем все динамическое, то можно тип в рантайме генерировать через Reflection.Emit.


А>Спс, я попробую Emit — это интересно. Там какие-нибудь грабли есть, например: безумно медленно или конфликт с настройками безопасности?


Готово Копипастой с MSDN и нембольшим проектированием.

Такой вопрос: созданные таким образом типы как-нибудь удалять надо/можно? Или оне автоматически уходят в небытие (правда не пойму как думатель узнает что Тип пора кокнуть)?
Re[10]: Как я зол!!! Silverlight и DataTable
От: notacat  
Дата: 22.11.10 10:52
Оценка:
А>Это воще не проблема.. т.к. Silverlight (а мне надо прикрутить именно к нему) просто не умеет DataTable/DataSet ваобще
У вас какая-то путаница. Сильверлайт же не умеет DataReader, но вы про него писали зачем-то. Вы уж определитесь, я же вас спросила как вы будете отдавать данные на клиент, и это вы опять про датасет написали. Перечитайте ветку повыше.
Сильверлайт умеет xml, и этого в принципе достаточно, чтобы на клиенте раскрутить даже датасет. Мы это у себя делаем.
Но если у вас нет готовой реализации для сильверлайта, то лучше про этот вариант не думать, а сразу заняться своими коллекциями.
Re[11]: Как я зол!!! Silverlight и DataTable
От: Аноним  
Дата: 22.11.10 12:41
Оценка:
Здравствуйте, notacat, Вы писали:

А>>Это воще не проблема.. т.к. Silverlight (а мне надо прикрутить именно к нему) просто не умеет DataTable/DataSet ваобще

N>У вас какая-то путаница. Сильверлайт же не умеет DataReader, но вы про него писали зачем-то. Вы уж определитесь, я же вас спросила как вы будете отдавать данные на клиент, и это вы опять про датасет написали. Перечитайте ветку повыше.
N>Сильверлайт умеет xml, и этого в принципе достаточно, чтобы на клиенте раскрутить даже датасет. Мы это у себя делаем.
N>Но если у вас нет готовой реализации для сильверлайта, то лучше про этот вариант не думать, а сразу заняться своими коллекциями.

Да, эт верно. (я допускаю что со стороны это выглядит Путаницей ещо той).

Просто тестил я поначалу в консоли на полном фреймворке, и у меня был выбор: DataTable vs Коллекции. С DataTable всё на порядок проще. Потом когда стал детализировать (тестировать на SL), то ГРРРРР узнал что с DataTable придётся завязать.

У меня трёхзвёнка. Среднее звено читает DbDataReader — раньше в DataTable, а теперь в коллекцию — которые отправляет клиенту WCF-ом.

Вот, щас клиент получает коллекции, дальше я создаю подходящий тип, по Вашей подсказке, и сую в DataGrid, который для моего типа сам столбцы — «гадский папа» — не строит. Ща биндинги изучаю штоб сказку сделать былью.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.