Bru*_*oLM 2 c# entity-framework
我有一个id列表
IEnumerable<long> ids
Run Code Online (Sandbox Code Playgroud)
如何从ID匹配的表中删除?
根据MSDN文档的"标准"方法是使用这些ID来提取每个对象,然后使用DeleteObject命令删除它们:
context.Where(x=>ids.Contains(x.Id)).ToList().ForEach(context.DeleteObject);
Run Code Online (Sandbox Code Playgroud)
这将为DB产生N + 1个往返.这是ORM的共同缺点; 它们在应用程序的SQL日常使用中占99%(查询结果,创建/更新/删除单个对象),但实际上并不是为这些批量操作而设计的.
您还可以使用ExecuteStoreCommand构造查询,并在其中"DELETE FROM table WHERE id IN @p1"指定ID列表作为参数.