LocalDB C# некорректно отображает данные при редактировании

Создаю простое приложение при помощи средств конструктора(программного кода минимум, осваиваю среду). Задача приложения это: Вывести данные из базы LocalDB(с учётом внешнего ключа) на одной вкладке tabControl, а так же позволить их редактировать на второй.

  1. Создаю проект с tabControl

  2. Создаю базу данных путём Проект > Добавить > Создать элемент

  3. Добавляю таблицы:

     CREATE TABLE [dbo].[sotrud]
         (
             [id] INT NOT NULL PRIMARY KEY, 
             [surname] NVARCHAR(50) NULL, 
             [name] NVARCHAR(50) NULL, 
             [otch] NVARCHAR(50) NULL, 
             [dolj] NVARCHAR(50) NULL
         )
    

А так же таблицу с внешним ключом.

CREATE TABLE [dbo].[opisanie]
    (
    [id] INT NOT NULL PRIMARY KEY, 
    [vozrast] NVARCHAR(50) NULL, 
    [staj] NVARCHAR(50) NULL, 
    [id_sotrud] INT NULL, 
    CONSTRAINT [FK_Table_Tosotrud] FOREIGN KEY ([id_sotrud]) REFERENCES [sotrud]([id])
    )
  1. Подключаю базу данных как новый источник данных и разворачиваю её на вкладке "Data Source" введите сюда описание изображения

  2. Переношу таблицу на форму в виде DataGridView

введите сюда описание изображения

введите сюда описание изображения

  1. Меняю в выпадающем окне таблиц параметр "DataGridView" на "Сведения" и так же перетаскиваю их на форму но уже на вторую вкладку tabControl. При этом компонент BindingNavigator автоматически не создаётся, поэтому я дважды копирую его с первой вкладки

введите сюда описание изображениявведите сюда описание изображения

  1. Меняю свойство BindingSource для компонентов BindingNavigator в соответствии с таблицами

введите сюда описание изображения

  1. Открываю конструктор баз данных и меняю свойства полей "id" во всех таблицах на:
 

    Autoincrement       - True
    AutoincrementSeed   - 1
    AutoincrementStep   - 1

В итоге при тестировании программы, первая таблица(Сотрудники) заполняется без нареканий и претензий, а вторая выдаёт просто чудеса.

  1. Может связать данные совсем не с тем id которое необходимо.
  2. Может просто не внести данные(возможно потому что id к которому она хотела подключиться не существует)
  3. В случае если добавить 1 запись и сразу же добавить вторую запись, то первая запись будет нормально отображаться в базе на первой вкладке TabControl.

введите сюда описание изображения

введите сюда описание изображения

Подскажите пожалуйста в чем заключается ошибка и как её исправить. Желательно средствами конструктора. Если исправить данную проблему возможно только кодом, то пожалуйста опишите подробно как это сделать, поскольку уровень знаний намного ниже среднего и простой комментарий по типу: "Это ерунда, откомпиль спарси продиспель компонент класса" мне вряд ли поможет. Заранее огромное спасибо!


Ответы (1 шт):

Автор решения: Winter

Собственно выходные прошли и со свежей головой решить данную проблему оказалось просто, настолько просто что даже стыдно. Дам ответ, вдруг кому из страдальцев вроде меня пригодится. При создании таблиц или полей заполнения таблиц с помощью конструктора, среда автоматически создаёт BindingNavigator в котором помимо стандартных компонентов находится кнопка сохранения/обновления - введите сюда описание изображения

И вот в отличии от стандартных элементов она содержит код который возможно отобразить. При копировании BindingNavigator, для корректной работы требуется не только изменить свойство BindingSource, но и заполнить кнопку сохранения/обновления(введите сюда описание изображения) программным кодом аналогичным тому который будет создан автоматически с первой навигационной панелью.

Извиняюсь за заданные глупые вопросы.

→ Ссылка