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に反映されていますか?

不思議なことに、次のように、のコレクションに追加carすると機能しますか?Carsmodel

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 に答える