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
以下是数据对象的图片:
我把一辆又一辆的车辆拖到我的表格上。然后使用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
bsVehicleOptions
清空他们的数据
Database.DataContext.SaveChanges();
我是不是漏了什么?
注意:我使用的是EntityFrameworkV4(我听说旧版本中的关联很时髦?)。