我正在重写一个曾经使用LINQ to SQL DeleteAllOnSubmit的应用程序,现在正在使用MVC5应用程序中的LINQ to Entities。 MSDN展示了构建我的L2E代码的方法。但是,我收到以下代码段的未知方法:
IEnumerable<QuoteItem> quoteItemsToDelete = (from qi in QuoteItem
where qi.QuoteID = q.QuoteID
select qi).ToList();
QuoteItem.DeleteAllOnSubmit(quoteItemsToDelete);
SubmitChanges();
我尝试替换的L2S代码段如下:
HttpContext.Current.GetDataContext().QuoteItems.
DeleteAllOnSubmit<QuoteItem>(q.QuoteItems);
根据收到的评论,我修改了以下代码:
using (var ctx = new FreightEntities())
{
var quoteitemtoDelete = ctx.QuoteItems.Remove();
ctx.SaveChanges();
}
但是,这会导致Unknown Method Remove() of System.Data.Entity.DbSet
我应该如何修改我的L2E代码以实现与L2S语法相同的目的?
答案 0 :(得分:1)
以下几行的内容对您有用:
public void DeleteAllOnSubmit<T>(IEnumerable<T> items) where T : class
{
foreach (var item in items)
{
Set<T>().Attach(item);
Set<T>().Remove(item);
}
SaveChanges();
}
基本上你必须循环遍历每个项目,并且一次调用Remove传递单个项目。
要了解有关移除方法的更多信息,请参阅DbSet.Remove()
使用EF Code First,您只需要删除一个实体,然后将其状态设置为Deleted。这证明了Delete Entity using DBContext