EF linq,将所有相关的OwnerId删除为Id

时间:2016-10-06 20:26:09

标签: c# entity-framework linq

我有两个表,carownerCar - 表使用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相关的所有汽车?

2 个答案:

答案 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();