1

我不知道你是如何在 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();
4

2 回答 2

1

嗯,奇怪。数据库中是否设置了关系?这是否反映在您的 .DBML 中?

出于好奇,如果您在 上添加carCarscolleciton 是否有效model,如下所示:

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();
于 2012-04-25T10:10:23.330 回答
0

也许它会起作用:

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();
于 2012-04-25T10:08:04.303 回答