c# - EF linq,删除所有相关的OwnerId到Id

标签 c# entity-framework linq

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

最佳答案

你需要先获得所有的车

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

关于c# - EF linq,删除所有相关的OwnerId到Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39905066/

相关文章:

linq - NHibernate 与 LINQ(谓词?)

vb.net - vb.net 中的 lambda 表达式

c# - .NET:一般的 DataAnnotation 属性

c# - 在 MVC View 中显示存储过程的结果 (EF 5/MVC 4)

c# - Entity Framework 中的联接表

c# - Entity Framework 似乎在缓存数据

c# - Linq-to-Entities/Linq-to-SQL,哪种数据轮询方式更高效?

c# - 如何在 C# 中动态加载父程序集中的引用

c# - 比较两个大小相等的位图以确定它们是否相同的最快方法是什么?

c# - 录制编码播放并保存一个 wav 文件