代码之家  ›  专栏  ›  技术社区  ›  Cris McLaughlin

实体框架外键表未保存对其BindingSource所做的更改

  •  1
  • Cris McLaughlin  · 技术社区  · 14 年前

    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

    我把一辆又一辆的车辆拖到我的表格上。然后使用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(我听说旧版本中的关联很时髦?)。

    0 回复  |  直到 14 年前