У меня есть две таблицы:
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
Вот изображение объектов данных:
Я перетащил 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 (я слышал Ассоциации в более старых версиях)были в стиле фанк?).