С использованием Visual Studio 2019 и sql Сервер 12
Я реализовал взаимосвязь основных деталей в winforms. Родительская запись отображается в форме, а дочерние записи для этой родительской строки отображаются в виде таблицы данных. Все работает хорошо, пока я просматриваю существующие записи. Однако, когда я добавляю новую родительскую запись, дочернее представление данных все еще застревает в последней просмотренной родительской (сохраненной) записи. Новая запись имеет временный идентификатор -1. Я использую автоматически сгенерированный идентификатор в БД. У БД есть ограничение внешнего ключа. Когда я добавил детальную таблицу в набор данных, появилась связь, но ограничения нет. Я тестировал с и без ограничений, но в поведении не было никаких изменений.
Я читал, что другие сообщили, что они не смогли сохранить подробные записи из-за временного идентификатора. Для меня, когда я добавляю новую дочернюю строку, она связывается с другой родительской записью, а не с новой родительской записью.
Между ResearchActivities и Contacts существует связь между многими. Эти три таблицы включают ResearchActivities, Contacts и ResearchActivitiesContacts. Я отношусь к ResearchActivity как к родителю, а ResearchActivitiesContacts - как к ребенку. Совместное использование некоторого кода: отношение fk c = новый глобальный :: System.Data.ForeignKeyConstraint ("FK__ResearchActvityContacts__ResearchActivity", новый глобальный :: System.Data.DataColumn [] {this.tableResearchActivity.ResearchActivityIDColumn}, новый global :: System.Data.DataColumn [] {this.tableResearchActivityContacts.ResearchActivityIDColumn}); this.tableResearchActivityContacts.Constraints.Add (FK c); fk c .AcceptRejectRule = global :: System.Data.AcceptRejectRule.None; fk c .DeleteRule = global :: System.Data.Rule.None; fk c .UpdateRule = global :: System.Data.Rule.Cascade;
источник привязки для дочернего элемента this.researchActivityContactsBindingSource.DataMember = "FK__ResearchActvityContacts__ResearchActivity"; this.researchActivityContactsBindingSource.DataSource = this.researchActivityBindingSource;
this.researchActivityBindingNavigator.BindingSource = this.researchActivityBindingSource;
this.researchActivityContactsBindingNavigator1.BindingSource = this.researchActivityContactsBindingSource;