powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / TableAdapter
25 сообщений из 29, страница 1 из 2
TableAdapter
    #35004641
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По определенным причинам (слишком много полей в таблицах >100 и "многословные" имена полей, да и просто удобно :) ) в проекте использовал типизированный датасет.
Теперь заказчик просит, что бы я дал возможность добавлять и удалять поля в таблицах. :(
Прога уже имеет приличный размер и все выгоды от TableAdapter использованы (директ методы и т.д.). Очень много где отключаются - подключаются события адаптера и т.д.
Предлагаю варианты:

1. Не трогать базовые таблицы (тем самым оставляя Датасет как есть, тем более что базовая часть таблицы модификации не подлежит). Создать сателлитные таблицы для подверженных изменениям таблиц, связать один к одному. После Fill TableAdapterом расширить DataTable включив туда поля из сателлитной таблицы и сгенерировать недостающие поля для интерфейсных элементов (поля обрабатываются тривиально)). При Update TableAdapterом вызвать Update для таблицы сателлита в транзакции.
2. ЕАВ для новых полей.
3. Дать возможность менять структуры базовых таблиц, при Fill сравнить имеющийся и настоящие схемы таблиц оставляя настоящий и сгенерировать дополнительные запросы для обновления. см п.1.
4. Переписать прогу заменив типизированный датасет на нетипизированный и дать возможность изменить структуры базовых таблиц. :(

Что еще можно придумать, что бы не делать п.4?
...
Рейтинг: 0 / 0
TableAdapter
    #35007870
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Числю себя за спеца по типизированному датасету. Он применим только при фиксированной структуре таблиц! Это со одной стороны, а с другой желание удалять добавлять поля таблицы это нечто! Там где переменная структура нужно пользоваться SqlCommandBuilder очень удобен! Скажем текст вставки для заранее неизвестной такблицы выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
      
            string sql_text = String.Format("select * from {0}", TableName);
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(sql_text, DBConnection);
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);         
            adapter.InsertCommand = builder.GetInsertCommand(true);
...
Рейтинг: 0 / 0
TableAdapter
    #35008554
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, Билли, поиск показал, что первый раз коммандбилдер использован 15.10.2003.
И на самом деле типизированный датасет и таблеадаптер не так уж итипизированы. Никакой защиты от обмана в типизированных датасетах нету. Так же динамически генеришь запрос, суешь таблеадаптеру и он спокойно (по умолчанию :)) меняет схему дататейбла и спокойно апдейдит.
Плохо что я использовал директ методы. :(
...
Рейтинг: 0 / 0
TableAdapter
    #35008562
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не так хорош коммандбилдер, при ручных джойнах замахаешься выкидывать ключи сателлитов. :(
...
Рейтинг: 0 / 0
TableAdapter
    #35010089
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовИ не так хорош коммандбилдер, при ручных джойнах замахаешься выкидывать ключи сателлитов. :(
Это верно отчасти, если заранее таблица неизвестна, то builder даёт способ, если надо строить то конечно проще из таблиц DataSet добавить\ удалиь колонку а текст запроса самому нарисовать + связать параметры с новыми колонками. Интересно, какой класс в отвечает за разборку sql? Тогда проще было бы жить в "open schema situations"
...
Рейтинг: 0 / 0
TableAdapter
    #35011619
DB2Adventurer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот типизированный датасет мне все нервы выел ( Все выглядело хорошо в рекламных туториалах - типа клик и все. Проблемы возникли при развитии и сопровождении, при активно мутирующих таблицах - типизрованный датасет не катит. Его идеология, сделал быстро и забыл. На первых порах обходился сателлитными таблицами и генерацией вьюшек, но потом апдейд реальной базы стал довольно таки ощутим. Плюнул и переписал. имхо четвертый вариант все-таки дешевле, чем придумывать все новые и новые костыли.
но мне конечно не надо было апдейтить сто полей :))
...
Рейтинг: 0 / 0
TableAdapter
    #35011667
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2Adventurer_Этот типизированный датасет мне все нервы выел ( Все выглядело хорошо в рекламных туториалах - типа клик и все. Проблемы возникли при развитии и сопровождении, при активно мутирующих таблицах - типизрованный датасет не катит. Его идеология, сделал быстро и забыл. На первых порах обходился сателлитными таблицами и генерацией вьюшек, но потом апдейд реальной базы стал довольно таки ощутим. Плюнул и переписал. имхо четвертый вариант все-таки дешевле, чем придумывать все новые и новые костыли.
но мне конечно не надо было апдейтить сто полей :))

Я так и решил, переписываю потихонько адаптеры.
А вьюшки мне тоже не разрешают. :) Низзя почему то. Приходится в памяти делать, но Линкю тоже низзя. Эх жизть моя - жестянка.
...
Рейтинг: 0 / 0
TableAdapter
    #35018526
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов DB2Adventurer_Этот типизированный датасет мне все нервы выел ( Все выглядело хорошо в рекламных туториалах - типа клик и все. Проблемы возникли при развитии и сопровождении, при активно мутирующих таблицах - типизрованный датасет не катит. Его идеология, сделал быстро и забыл. На первых порах обходился сателлитными таблицами и генерацией вьюшек, но потом апдейд реальной базы стал довольно таки ощутим. Плюнул и переписал. имхо четвертый вариант все-таки дешевле, чем придумывать все новые и новые костыли.
но мне конечно не надо было апдейтить сто полей :))

Я так и решил, переписываю потихонько адаптеры.
А вьюшки мне тоже не разрешают. :) Низзя почему то. Приходится в памяти делать, но Линкю тоже низзя. Эх жизть моя - жестянка.
Интересно что многие переписывают Adapter, в каком направлении вы это сделали?
...
Рейтинг: 0 / 0
TableAdapter
    #35018650
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я наверное неправильно выразился - просто меняю таблеадаптер на обычный там где не совсем невмоготу, а где ничего меняю коммандколлекшн и не пользуюсь директ методами. :)
...
Рейтинг: 0 / 0
TableAdapter
    #35019510
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 4, я его всегда с самого начала выбираю.
Сахават Юсифов , вы знаете, как я вас уважаю :) (с)Ильф и Петров, "Золотой теленок" , но сто полей в таблице!!! У вас уникальный стиль!
...
Рейтинг: 0 / 0
TableAdapter
    #35019851
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i seeВариант 4, я его всегда с самого начала выбираю.
Сахават Юсифов , вы знаете, как я вас уважаю :) (с)Ильф и Петров, "Золотой теленок" , но сто полей в таблице!!! У вас уникальный стиль!

Врядли это личный стиль. Часто система пишется для существования в базе с другой системой - типа SAP, Priority, или еще что... а там 100 полей - это так, средняя табличка. И поля убирать и добавлять в базу возможно стандатным интерфейсом (не MS Enterprise). В частности, в SBO есть такое.
...
Рейтинг: 0 / 0
TableAdapter
    #35020544
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовЯ наверное неправильно выразился - просто меняю таблеадаптер на обычный там где не совсем невмоготу, а где ничего меняю коммандколлекшн и не пользуюсь директ методами. :)
А в чём конкретно неудобство от типизированного датасета? Я ещё не разу не слышал разумных соображений!
...
Рейтинг: 0 / 0
TableAdapter
    #35020547
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i seeВариант 4, я его всегда с самого начала выбираю.
Сахават Юсифов , вы знаете, как я вас уважаю :) (с)Ильф и Петров, "Золотой теленок" , но сто полей в таблице!!! У вас уникальный стиль!

100 полей, это только базовая часть этих таблиц (и то каждый день подкидывают по несколько новых "базовых"). Задача специфическая. Вкраце.
Есть объекты и море их характеристик-свойств. Объекты могут быть классифицированы разными способами (лес деревьев, со спецалгоритмами конструирования и расформации). Каждое свойство имеет массив свойств. Значения этих свойств явялется массивом. Каждое значени ссылается на источник (со своими характеристиками) этих сведений о значениях.
Каждому объекту пользователем может быть динамически прикреплен (откреплен, переименован) "показатель" - запись с многими альтернативами. :)
Всю эту фигню надо показать в едином графе для анализа. Анализ особый, допустим какие-то агрегаты вычислимы, а какие то устанавливаются вручную, какие-то именно агрегируются, а другие распределяются. :)
Таких графов много. Между графами имеются отношение типа - объект эквивалентен ветке объектов и т.д.
Использование вью запрещено (да и мало толку).
Большинство полей имеют размерность - nvarchar(MAX). :) А начинаются так с 250 знаков. :)
Усе это будет работать (частично работает) через удаленный доступ.

Так что - таков заказ. :)
...
Рейтинг: 0 / 0
TableAdapter
    #35020555
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great Сахават ЮсифовЯ наверное неправильно выразился - просто меняю таблеадаптер на обычный там где не совсем невмоготу, а где ничего меняю коммандколлекшн и не пользуюсь директ методами. :)
А в чём конкретно неудобство от типизированного датасета? Я ещё не разу не слышал разумных соображений!
Да хотя бы в том, что нет метода - регенерация. :)
...
Рейтинг: 0 / 0
TableAdapter
    #35020560
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Врядли это личный стиль. Часто система пишется для существования в базе с другой системой - типа SAP, Priority, или еще что... а там 100 полей - это так, средняя табличка. И поля убирать и добавлять в базу возможно стандатным интерфейсом (не MS Enterprise). В частности, в SBO есть такое.

Да, тут тоже самое. И интерфейс такой тоже имеется.
...
Рейтинг: 0 / 0
TableAdapter
    #35020866
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов
Да хотя бы в том, что нет метода - регенерация. :)
То есть как нет? У меня полей не так уж много, но именно то что, после добавления поля на сервере в таблицу можно открыть типизированный датасет, в нём открыть главный селект и отметить новые поля, после чего все запросы перегенерятся. Впрочем вы и так всё это знаете! Может вы о другом?
...
Рейтинг: 0 / 0
TableAdapter
    #35021196
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовТак что - таков заказ. :)
Ужос! Не ГИС, случаем?
...
Рейтинг: 0 / 0
TableAdapter
    #35021342
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great Сахават Юсифов
Да хотя бы в том, что нет метода - регенерация. :)
То есть как нет? У меня полей не так уж много, но именно то что, после добавления поля на сервере в таблицу можно открыть типизированный датасет, в нём открыть главный селект и отметить новые поля, после чего все запросы перегенерятся. Впрочем вы и так всё это знаете! Может вы о другом?
Это в рантайм? Если да, то точно не знал. :(
Я вручную меняю все запросы, а директ методы не могу (вернее думал, что это невозможно и потому не смотрел).
...
Рейтинг: 0 / 0
TableAdapter
    #35021346
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов Bill Great Сахават Юсифов
Да хотя бы в том, что нет метода - регенерация. :)
То есть как нет? У меня полей не так уж много, но именно то что, после добавления поля на сервере в таблицу можно открыть типизированный датасет, в нём открыть главный селект и отметить новые поля, после чего все запросы перегенерятся. Впрочем вы и так всё это знаете! Может вы о другом?
Это в рантайм? Если да, то точно не знал. :(
Я вручную меняю все запросы, а директ методы не могу (вернее думал, что это невозможно и потому не смотрел).
Просто не видел там таких событий.
...
Рейтинг: 0 / 0
TableAdapter
    #35021353
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i see Сахават ЮсифовТак что - таков заказ. :)
Ужос! Не ГИС, случаем?
Межотраслевой баланс для планеты. :) Без смеха.
...
Рейтинг: 0 / 0
TableAdapter
    #35021611
VLA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовМежотраслевой баланс для планеты. :) Без смеха.
А заказчик кто? Боюсь даже предположения высказать...
...
Рейтинг: 0 / 0
TableAdapter
    #35021654
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLA Сахават ЮсифовМежотраслевой баланс для планеты. :) Без смеха.
А заказчик кто? Боюсь даже предположения высказать...
Ну, не господь бог, конечно, но амбиций хватает. :)
...
Рейтинг: 0 / 0
TableAdapter
    #35021679
VLA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)

Практика - критерий истины © Кант И., Маркс К., Ленин В.
...
Рейтинг: 0 / 0
TableAdapter
    #35021716
VLA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават, скинь мне на мой ящик свои координаты (те, что указаны в твоем профиле, устарели, наверное).
Есть предложение.
...
Рейтинг: 0 / 0
TableAdapter
    #35021731
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLAСахават, скинь мне на мой ящик свои координаты (те, что указаны в твоем профиле, устарели, наверное).
Есть предложение.
Ничего не устарело (кроме самого). :)
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / TableAdapter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]