Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Универсальная загрузка связей, к топику про класс для работы с БД 
:(
    Опции темы
aromm
  Дата 13.11.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Добрый день!

Я практически разработал универсальное приложение для работы с БД на основе нетипизированного DS.

Но! меня интересует возможно ли загрузить все созданные в БД отношения (не зная их)?
PM MAIL   Вверх
thomas
Дата 13.11.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



В ДатаСете присутствуют две коллекции: DataTableCollection и DataRelationCollection.
Первая содержит таблицы, вторая может содержать DataRelation  между ними.
Посмотри как создаются обьекты DataRelation и все станет ясно.
Ответ на твой вопрос кроется в необходимых параметрах для создания этих обектов.
Не зная параметров, не возможно создать обьект.

Добавлено через 2 минуты и 46 секунд
Почитать можно тут

Добавлено через 5 минут и 32 секунды
и тут.
Причем здесь видно, что не зная по каким полям связаны таблицы в Бд не возможно задать связи в ДатаСет


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
aromm
Дата 13.11.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.11.2007

Репутация: нет
Всего: нет



Цитата(thomas @ 13.11.2007,  10:51)
В ДатаСете присутствуют две коллекции: DataTableCollection и DataRelationCollection.
Первая содержит таблицы, вторая может содержать DataRelation  между ними.
Посмотри как создаются обьекты DataRelation и все станет ясно.
Ответ на твой вопрос кроется в необходимых параметрах для создания этих обектов.
Не зная параметров, не возможно создать обьект.

Добавлено @ 10:54
Почитать можно тут

Добавлено @ 10:57
и тут.
Причем здесь видно, что не зная по каким полям связаны таблицы в Бд не возможно задать связи в ДатаСет

Возможно, я не очень понял, но в представленных Вами примерах связи задаются вручную. Но я изначально не знаю какая у меня БД и соответственно не могу знать ее структуры и связей.

Как тогда мне быть? Возможно есть системная таблица, которая хранит связи?
PM MAIL   Вверх
tol05
Дата 13.11.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Я могу ошибаться, но ИМХО это стоит попробовать


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
thomas
Дата 13.11.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Как я понял, из всего что там  написанно.
Этот метод возвращает
Цитата

Массив объектов DataTable, который содержит сведения схемы, возвращенные из источника данных.

что означает - какие столбцы содержит таблица БД, какого типа и так далее. Но не схему связей таблиц БД.
Схему связей таблиц БД может содержать файл xsd, который(при наличии) часто используют для создания типизированного дата сета.

Добавлено @ 13:54
Вот в этой статье расписано как заполнить ДатаСет.
И там говориться о методе FillSсhema следующее
Цитата

Метод "Fill" загружает непосредственно данные, а метод "FillSchema" загружает все доступные метаданные о конкретной таблице (такие, как имена столбцов, первичные ключи, ограничения).

И никаких упоминаний о связях таблиц в самой БД.
Тут возникает вопрос, достаточно ли информации о наличии данных о первичных ключах в таблицах БД чтобы создать обьекты DataRelation в ДатаСет?
Мне кажеться что нет. Потому как вторичный ключ может иметь совершенно отличное наименование от первичного ключа с которым он связан.

Добавлено @ 13:58
Здесь описывается как получить  ДатаСет на основании данных из XML, т.е. из файла xsd.

Это сообщение отредактировал(а) thomas - 13.11.2007, 13:58


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
thomas
Дата 13.11.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



aromm, 
Мне думается, надо двигаться в направлении xsd. Без этого создать связи в ДатаСет не имея понятия о кол-ве и связях таблиц в БД наверное просто не возможно.
Вот еще посмотри ЭТО,  и далее это.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Papirus
Дата 14.11.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Может быть поможет выборка данных из системных таблиц БД? В случае SQL server 2000 - sysobjects, например...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0805 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.