Я немного болтаю с DAO и SQL Server, и у меня возникает проблема, когда я пытаюсь вставить значения в две таблицы, которые имеют отношение.Таблица Photos
имеет поле gpsId
, которое имеет отношение внешнего ключа к полю id
таблицы GPSLocations
.Я хочу создать новую запись "Фотографии", связанную с новым местоположением GPS, поэтому код выглядит примерно так:
gpsRow = dataset.GPSLocations.AddGPSLocationsRow("0.0N", "3.2W");
dataset.Photos.AddPhotosRow(@"c:\path\file.jpg", gpsRow);
tableAdapterManager.UpdateAll(dataset);
Однако это приводит к следующей ошибке:
ЧужойЗначение ключа не может быть вставлено, потому что соответствующее значение первичного ключа не существует.[Имя ограничения внешнего ключа = photoToGps]
Я использую SQL Server CE.Верно ли мое понимание того, что TableAdapterManager
должен обрабатывать это иерархическое обновление?Я просто перетащил эти таблицы в представление XSD и использовал автоматическое создание классов-оболочек.Нужно ли что-нибудь изменить в отношении (например, сделать его ограничением внешнего ключа)?Я заметил, что при некоторых обстоятельствах идентификатор gps является положительным, а иногда и отрицательным, это уместно?
РЕДАКТИРОВАТЬ: я также гарантировал, что для свойства обновления установлено значение CASCADE, что приводит к той же ошибкеДля иерархических обновлений задано значение true, и между двумя таблицами в конструкторе существует ограничение внешнего ключа.