从多个表中删除对象

本文关键字:删除 对象 | 更新日期: 2023-09-27 17:59:28

如果电影是从列表框中选择的,并且它正在工作,我正试图从租赁表中删除它,但我还需要从租赁人员表中删除连接到电影的数据

Rentals表包含列表框中的movieid和在rentingpeople中也可以找到的personid,如果匹配,则应删除整行。

var search = (from g in db.Rentals where g.Movietitle == (string)lBfilmlista.SelectedValue select g).First();
foreach (var c in db.Rentingpeople where c.personid==search.personid).First();
{
     db.Rentingpeople.DeleteObject(c);
}
db.Rentals.DeleteObject(search);
db.SaveChanges();

where c.personid==search.personid处存在代码错误);预期

从多个表中删除对象

问题在于foreach循环末尾的First,以及查询语法与方法语法的混合。

所以你的代码应该是:

var search = (from g in db.Rentals where g.Movietitle == (string)lBfilmlista.SelectedValue select g).First();
var rowsToBeDeleted = db.Rentingpeople.Where(c=>  c.personid==search.personid).ToList(); 
foreach (var item in rowsToBeDeleted)
{
     db.Rentingpeople.DeleteObject(item);
}
db.Rentals.DeleteObject(search);
db.SaveChanges();

还可以为表设置"删除时级联"规则。