实体框架:删除多个对象查询

时间:2009-08-14 11:31:18

标签: entity-framework

我有一个List,它包含我要删除的集合中的许多对象的PK 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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

Mel的答案不起作用,因为在.NET 3.5 SP1中,EF不知道如何将list.Contains(...)转换为T-SQL。虽然这是4.0版本。

解决方法是手动生成一个大的OR查询,即

Where(obj => obj.ID == item1 || obj.ID == item2 ....)

这是我写的一个提示,这很简单:

Tip 8 - How to write where IN style queries using LINQ to Entities

希望这有帮助

亚历克斯詹姆斯

实体框架小组 - 阅读我的Entity Framework Tips

答案 2 :(得分:0)

http://efe.codeplex.com

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