powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить DataAdapter по DataTable
8 сообщений из 8, страница 1 из 1
Получить DataAdapter по DataTable
    #34760495
_jt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас просматриваю типизированный датасет...Каждой таблице ассоциирован свой тейбладаптер, покапался в мемберах датасета, ничего похожего на это не нашел, подскажите кто знает, можно ли получить объект сабж..или наоборот.
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34761256
_jt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диалог PreviewData из VS2005 тоже откуда-то информацию черпает...
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34762866
_wwwwww_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типизированные адаптеры не являются членами класса датасета. Они создаются в отделньом неймспейсе. Полистай файл dataset.designer.cs и увидишь в самом низу классы адаптеров
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34763327
_jt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ты прав.
Жаль что нельзя получить из таблицы ссылку на объект адаптера :(
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34768908
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать с помошью отражения создать новый экземпляр адаптера. Мастер всегда называет адаптер так же как таблицу+"TableAdapter". Что-то типа

Код: plaintext
1.
2.
string tableName = "Название таблицы";
Object adapter = Assembly.GetAssembly(ваш датасет.GetType()).CreateInstance("пространство имен."+TableName+"TableAdapter", true);
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34769070
_wwwwww_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_jtДа, ты прав.
Жаль что нельзя получить из таблицы ссылку на объект адаптера :(

Таблица не знает как лазить в базу и не должна знать. Помещать в таблицу адаптер было бы нарушением правил инкапсуляции. Зачем получать из таблицы адаптер, если можно получить таблицу из адаптера через GetData() ? Если уж так не терпится, нужно просто сделать хелпер, в котором указать связь между типом таблицы и типом адаптера.
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34769266
Senja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще наверное действительно не должна, но хочется регулярно.

Ведь как ведет себя мастер в студии? При "добавлении таблицы" кладет на форму BindingSource и TableAdapter. Причем BindingSource может быть нужно несколько на отдну таблицу, а вот ситуацию, когда на одной форме нужно два идентичных адаптера я себе не представляю.
Почему бы не объявить адаптеры static и не париться? Все равно никакого внутреннего состояния у адаптеров нет. Там DataAdaper + набор SqlCommand, который у всех экземпляров одного адаптера все равно создается идентичным и Connection, который либо свой собственный у каждого, либо один общий у всех. Нафига плодить экземпляры для каждой формы?

Плюс к тому TableAdapter скрывает некоторые важные свойства DataAdapter. Вобщем TableAdapter - это плохо :(
...
Рейтинг: 0 / 0
Получить DataAdapter по DataTable
    #34772325
_jt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал функцию которая проходит рекурсивно все таблицы в датасете делая обновление. Вот и нужно было получить из таблицы ассецеированный адаптер. Тут пошли мысли, как бы было здорово сказать таблице чтобы она сама передала обновления себя...
Сделал через полученный из Type метод GetData, анализируя его возращаемый тип, получая тип таблицы..получается как-то кверх ногами, но другого способа я не нашел.
SenjaМожно попробовать с помошью отражения создать новый экземпляр адаптера. Мастер всегда называет адаптер так же как таблицу+"TableAdapter". Что-то типа

Код: plaintext
1.
2.
string tableName = "Название таблицы";
Object adapter = Assembly.GetAssembly(ваш датасет.GetType()).CreateInstance("пространство имен."+TableName+"TableAdapter", true);

Хотелось бы, чтобы ничего не зависло от имен, но спасибо Senja, я не знал что можно екземпялры создавать через тип.
Ты говоришь про статические датаадаптеры, у меня вопрос) Я еще это не проверял..Как ведет себя экземпляр датасета? если я изменяю его один экземпляр, допустим на 1 форме, что будет с другими? Впрочем экземпляр он и есть экземпляр..Видно придется передавать ссылку на один датасет созданный где-нибдь в главной форме другим формам через свойтсва чтоли...Тогда возникает проблема с визуальной привязкой контролов..можно конечно создать екземпялр также визуально, а в коде инициализации присваивать ему ссылку датасета из главной формы, но что-то получаетс как-то все не тат, как хотелось бы...Нет примера как это правельно делать, приходится выдумать какой-то глючный код
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить DataAdapter по DataTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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