У меня есть довольно стандартная настройка таблицы в текущем приложении с использованием функций .СЕТЬXSDDataSet и TableAdapter. Моя таблица contracts состоит из некоторой стандартной информации о контракте, со столбцом для primary department. Этот столбец является иностранный ключ моей таблицы Departments, где я храню базовые department name, id, notes. Все это настроено и работает в моем SQL Server.
Когда я использую инструмент XSD, я могу перетащить обе таблицы одновременно, и он автоматически обнаруживает / создает внешний ключ, который у меня есть между этими двумя таблицами. Это отлично работает, когда я нахожусь на своей главной странице и просматриваю данные контракта.
Однако, когда я перехожу на свою административную страницу, чтобы изменить данные отдела, я обычно делаю что-то вроде этого:
Dim dtDepartment As New DepartmentDataTable()
Dim taDepartment As New DepartmentTableAdapter()
taDepartment.Fill(dtDepartment)
Однако в этот момент создается исключение, говорящее о том, что здесь нарушена ссылка на внешний ключ, я предполагаю, поскольку у меня нет заполненного Contract DataTable.
Как я могу исправить эту проблему? Я знаю, что могу просто удалить внешний ключ из XSD, чтобы все работало нормально, но наличие дополнительной проверки целостности и соответствие схемы XSD схеме SQL в базе данных - это хорошо.





Вы можете попробовать отключить Check-constraints для DataSet (он находится в его свойствах) или изменить свойства этого отношения и изменить ключ на простую ссылку - на ваше усмотрение.
Это свойство называется EnforceConstraints.