更新外键列
本文关键字:更新 | 更新日期: 2023-09-27 18:32:15
我不知道你是如何在linq-to-sql中做到这一点的。
下面是简单的外键示例。
CARS TABLE
Columns - CARID (PK), NAME, SIZE, MODELID(FK)
MODELS TABLE
Columns MODELID(PK), MODELNAME
要在SQL中更改汽车的型号,我会
UPDATE CARS
SET MODELID = 'MODEL88'
WHERE CARID = 'CAR01'
在 linq-to-sql 中,我尝试做类似的事情,但更新不起作用。
Car car = db.Cars.Where(x => x.CarId == "CAR01").FirstOrDefault();
Model model = db.Models.Single(c => c.ModelId == "MODEL88");
car.Model = model;
db.SubmitChanges();
没有例外,它只是不进行更新。更新其他不是外键的字段确实有效,例如大小。
Car car = db.Cars.Where(x => x.CarId == "CAR01").FirstOrDefault();
car.Size = "22";
db.SubmitChanges();
嗯,奇怪。是否在数据库中设置了关系?这是否反映在您的.DBML?
出于好奇,如果您将car
添加到model
上的Cars
列中,它是否有效,如下所示:
Car car = db.Cars.Where(x => x.CarId == "CAR01").FirstOrDefault();
Model model = db.Models.Single(c => c.ModelId == "MODEL88");
model.Cars.Add(car)
db.SubmitChanges();
也许它会起作用:
Car car = db.Cars.Where(x => x.CarId == "CAR01").FirstOrDefault();
Model model = db.Models.Single(c => c.ModelId == "MODEL88");
car.ModelId = model.Id;
db.SubmitChanges();