Таблица внешнего ключа Entity Framework не сохраняет изменения, внесенные в его BindingSource - PullRequest
1 голос
/ 10 октября 2010

У меня есть две таблицы:

CREATE TABLE `Vehicles` (
    `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    ... Other columns
    PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1

И:

CREATE TABLE `VehicleOptions` (
    `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `VehicleID` int(10) unsigned NOT NULL,
    ... Other columns
    PRIMARY KEY (`ID`),
    KEY `FK_Vehicles_to_VehicleOptions` (`VehicleID`),
    CONSTRAINT `FK_Vehicles_to_VehicleOptions` FOREIGN KEY (`VehicleID`) REFERENCES `vehicles` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1

Вот изображение объектов данных:

Data Objects

Я перетащил Vehicle и VehicleOptions на мою форму.Затем я загружаю базу данных, используя запрос LINQ:

var dataSource = from v in Database.DataContext.Vehicles.Include("VehicleOptions")
                 orderby v.Stock descending
                 select v;

// The vehicles BindingSource
bsVehicles.DataSource = dataSource;

// The vehicleoptions BindingSource
bsVehicleOptions.DataSource = bsVehicles;
bsVehicleOptions.DataMember = "VehicleOptions";

Всякий раз, когда я добавляю / редактирую данные в моей форме, я звоню:

bsVehicles.SuspendBinding();
bsVehicleOptions.SuspendBinding();
Database.DataContext.SaveChanges();
bsVehicleOptions.ResumeBinding();
bsVehicles.ResumeBinding();

Изменения, сделанные в bsVehicles, сохраняются вмоя база данных MySQL, но изменения, внесенные в bsVehicleOptions, отсутствуют.Даже в форме элементы управления, связанные с bsVehicleOptions, очищают свои данные в Database.DataContext.SaveChanges(); Я что-то здесь упускаю?

Примечание: я использую Entity Framework V4 (я слышал Ассоциации в более старых версиях)были в стиле фанк?).

...