我有两个表,car
和owner
。 Car
- 表使用OwnerId
作为FK。
我必须删除与OwnerId
相关的汽车才能删除Owner
。
如何指向Car
表中的每个相关行并将它们全部删除?到目前为止,我在第一行遇到错误:
(它的一对多关系,很多车可以有相同的OwnerId
)
Car car = db.Cars.Where(c => c.OwnerId == id); //this gives me error:
db.Cars.Remove(car);
db.SaveChanges();
Owner owner = db.Owners.Find(id);
db.Owners.Remove(owner);
db.SaveChanges();
错误说:cannot convert from System.Linq.IQueryable<X.Models.Car> to <X.Models.Car>
。如何删除与特定Id
相关的所有汽车?
答案 0 :(得分:2)
汽车的结果返回清单。
如果您只想要一个结果,请使用以下内容。
Car car = db.Cars.Where(c => c.OwnerId == id).FirstOrDefault();//this gives me error:
使用以下内容进行多次
var cars = db.Cars.Where(c => c.OwnerId == id).ToList();//this gives me error:
答案 1 :(得分:2)
首先需要获得所有车辆
List<Car> list = db.Cars.Where(c => c.OwnerId == id).ToList();
//Delete all cars
foreach(Car car in list){
db.Cars.Remove(car);
db.SaveChanges();
}
Owner owner = db.Owners.Find(id);
db.Owners.Remove(owner);
db.SaveChanges();