![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
mongoloid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.8.2009 Репутация: нет Всего: 1 |
Суть проблемы: имеются три связанные таблицы, БД - SQL Server CE 3.5. Таблицы созданы в конструкторе, интерфейс юзера к ним (ДатаГридВью) - тоже. Во всех таблицах ключевые поля - автоинкрементные. Одна из таблиц связана с двумя другими отношениями один-ко-многим. После внесения изменения в таблицы не удается сохранить БД, выскакивает ошибка - "Невозможно вставить внешний ключ, так как не существует соответствующий первичный ключ [...]"
Поиск решения проблемы привел сюда: Д.Сеппа. Программирование на Microsoft ADO.NET 2.0, стр. 499. Цитата: " ВНИМАНИЕ! Полученные значения автринкремента могут не каскадироваться к соответствующим дочерним записям, что обусловлено особенностями средств проектирования среды Visual Studio, которые конфигурируют объект DataSet со строгим контролем типа. Как уже упоминалось в главе 9, объекты DataRelation, автоматически генерируемые средой Visual Studio 2005, не связаны с объектом ForeignKeyConstraint, поэтому изменения в родительской записи не могут каскадироваться в соответствующие дочерние записи. Столкнувшись с этой проблемой, дважды нажмите DataRelation объекта DataSet со строгим контролем типа и укажите в появившемся диалоговом окне, что вам необходимы объекты DataRelation и ForeignKeyConstraint, и присвойте свойству Cascade значения Update и Delete. Оставьте свойство Accept Reject равным None. " Кто сумеет объяснить, что имел в виду мэтр? Где находится объект, на который нужно нажимать дважды? Предполагаю, что в VS 2010 нажимать нужно на что-то другое, на что именно? |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
открывайте редактор DataSet-а (дважды по xsd файлу тыркайте). Будет отображена схема, включающая в себя и Relation-ы между таблицами (связи помечаются линиями между таблицами). Вот по линиям между таблицами и щелкайте дважды..
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
mongoloid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.8.2009 Репутация: нет Всего: 1 |
Не помогает... А в перевод Сеппы, по-моему, не помешало бы внести поправку. По-моему, должно быть так: "... и присвойте правилу обновления (Update) и правилу удаления (Delete) значение Cascade. Правило принятия или отклонения (Accept Reject) оставьте равным None".
Это сообщение отредактировал(а) mongoloid - 7.8.2011, 10:44 |
|||
|
||||
alexprogramer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 23.10.2011 Репутация: нет Всего: нет |
Похожая проблема 1 в 1. Попытался использовать tableAdapterManager.UpdateAll стала сохраняться только самая первая таблица а изменения в остальных нет. Перечитал форумы мсдн нифига не помогает и никто толком ничего не может ответить. Проблема сто раз у всех должна была возникать, подскажите пож как решить.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |