Entity Framework:删除多个对象查询

3
我有一个列表,其中包含要删除集合中多个对象的主键ID。是否有人知道如何编写一条单独的查询语句来检索这些对象?
例如:
IList<int> objectList; // populated with int Primary key Ids

using (MyEntities context = new MyEntities()){

    var result = context.MyObjectCollection.Where(obj=> obj.ID IN objectList);

    foreach(var item in result){
        context.DeletObject(item);
    }
    context.SaveChanges();
}

非常感谢您的帮助!

3个回答

1
var result = context.MyObjectCollection.Where(obj=> objectList.Contains(obj.ID));

1
Mel的答案不起作用,因为在.NET 3.5 SP1中,EF不知道如何将list.Contains(...)翻译成T-SQL。尽管这将在4.0中得到解决。
解决方法是手动生成一个大的OR查询,即
Where(obj => obj.ID == item1 || obj.ID == item2 ....)

这里有一个我写的小技巧,可以让这个过程变得容易:

Tip 8 - 如何使用LINQ to Entities编写where IN风格的查询

希望这能帮到你

Alex James

Entity Framework团队 - 阅读我的Entity Framework技巧


0

http://efe.codeplex.com

this.Devices.Update(o => new Device() { LastOrderRequest = DateTime.Now, Description = "teste" }, o => o.Id == 1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接