![]() |
|
Модераторы: gambit |
![]()
|
|
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
Привет всем
на этой строке ( ds.Relations.Add(dataColumn1, dataColumn2);) вылетает ошибка These columns don't currently have unique values. в чем может быть дело? Это сообщение отредактировал(а) kizune - 29.11.2007, 15:20 |
|||
|
||||
| Experimenter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 430 Регистрация: 8.5.2007 Где: Уфа Репутация: 3 Всего: 17 |
kizune, ты и сам наверное перевел текст ошибки? выполняется условие?
-------------------- public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){ if(zlo1 < zlo2) return zlo1; else if(zlo1 > zlo2) return zlo2; else throw new Exception("Kill yourself by the wall"); } |
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
сама перевела но как ее разрешить? |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
kizune,
Приветствую. Связь надо добавлять по колонкам первичного ключа из родительской таблицы и включенным аналогичным полем в дочерней таблице. Добавлено через 7 минут и 25 секунд Почитай вот эту статью. И все получиться. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
спасибо, теперь ясно.
мои таблицы не валидные |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
kizune,
Почитайте этот курс лекций. О проектировании БД. Эта лекция про нормализацию. Если будете работать с БД очень нужная информация. Потому как это основа. Успехов. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
большое спасибо,почитаю на досуге
|
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
А зачем сначала создавать отношения в базе данных, а затем пересоздавать их в том же DataSet вручную заново? Нельзя просто перенести отношения из БД?
И зачем вообще создавать отношения Парент-чайлд, если использую 1НФ и так понятно что в чайлде ключом будет ключ паррента + собственный ключ. и просто добавить фореинг кей в чайлд со ссылкой на парент в самой БД. П.С. Кто не понял о 1НФ, читайте http://www.mstu.edu.ru/education/materials...kov/ch_4_2.html |
|||
|
||||
| thomas |
|
||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Killerman,
Приветствую.
Затем что, в созданном в "ручную" ДатаСете есть только таблицы. И связей между ними пока еще нет. Обьект relation надо создавать в "ручную" указывая по каким полям связывать таблицы.
Можно. Но для этого надо использовать типизированный ДатаСет. Он создаеться в дизайнере. И является как бы копией БД в памяти, т.е. содержит не только данные, но и структуру БД. В этом случае, даже если в базе не были созданы отношения между таблицами, их можно создать в дизайнере. В случае же не типизированного ДатаСет, все создается "ручками", т.е. пишеться соответствующий код. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||
|
|||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Ясно.
Но вот не могу понять. Если создавать датасет, коннекшин и датаадаптер вручную, то как потом модифицировать Датасет и вместе с ним тейбладаптер в визарде? получается уже никак? |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Killerman,
Приветствую.
Если создавать датасет, обьект соединения и датаадаптер "в ручную" то никакого таблеадаптера нет. Таблеадаптер получается если создавать типизированный датасет в мастере. Тогда для каждой таблицы помещенный в датасет студия создаст свой таблеадаптер. И только типизированный датасет можно увидеть и отредактировать в дизайнере. Датасет который создается в коде во время выполнения в дизайнере ни когда не увидите. И все действия с ним (его обьектами) выполняются только через код. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Привет thomas.
А в чем преимущество создания датасета вручную? Ведь визарда для него нет, и в дальнейшем могут появиться трудности модификации (если база большая, то можно упустить многие моменты организации связей и т.д.). |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Killerman, когда датасет создаётся вручную, во-первых можно добавить только те поля таблиц которые нужны и более тонко их настроить (например выставить constraint или точный тип данных), а во-вторых можно добавить связи между таблицами.
Кроме того, наиболее важным преимуществом работы с типизированными датасетами служит то, что студия автоматически генерирует исходный код для работы с таблицами и строками, так что можно обратиться к конкретному полю таблицы например так: dataSet.Customers[1].Name = "abcd" -------------------- ![]() |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Killerman,
Приветствую.
По моему, как раз наоборот. При использовании типизированного ДатаСет, после его создания в режиме дизайнера, написания всего приложения и создания setup, что-то там в ДатаСет изменить уже не получиться. А при использовании ДатаСет, созданного "в ручную" и зашитого в одну из библиотек, в последствии можно в программе заменить эту библиотеку на новую и усё. Еще момент когда сам пишешь код для команд, датаАдаптера и всего что связано с ДатаСет и данными, то понимаешь что ты делаешь и как это все у тебя работает. При работе с типизированным датаСет, все эти действия выполняет студия. Причем за кулисами. И многие, особенно начинающие программисты, очень часто имеют проблемы при создании приложений только из-за того, что не занают: а как же это все работает? Дизайнер это хорошо, это быстро, но не гибко. Сам ты можешь замутить любую логику. Да нужно потратить время на создание модели и написание кода, но результат будет существеннее. Я не призываю отказываться от дизайнера и делать все исключительно через код, но по моему лучше сначала научиться все делать без дизайнера, а потом уже учиться работать с дизайнером. В любом случае ЗНАНИЕ - Сила!!! Это сообщение отредактировал(а) thomas - 5.2.2008, 00:04 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Killerman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
А мне было только начал нравится дизайнер. 8-(
Но просмотрев сгенерированный дизайнером код на простенькую БД:
(500 строк кода По моему чем мощнее становится ПО по разработке и чем больше скрывается реализация, тем все меньше от программиста что либо зависит. Это сообщение отредактировал(а) Killerman - 5.2.2008, 13:05 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |