[英]C# Entity Framework what is the time complexity of .Find(id) method
.Find(id)
方法的时间复杂度是多少? 遍历id列表并使用.Find()
是一个坏主意吗?
还可以在同一查询中“查找”多个ID吗?
foreach (var id in idList)
{
var task = _model.Tasks.Find(id);
Save(task,task.id);
}
最好的方法是什么?
根据您使用元素的方式(以及元素的数量),可能会发现一次加载所有实体更好:
// given List<int> idList
var tasks = _model.Tasks.Where(x => idList.Contains(x.id))
foreach (var task in tasks)
{
Save(task, task.id);
}
请注意,“ Find
Where
使用主键执行“位置”,因此,如果实体没有主键或具有复合键,则必须小心。 您也不会得到键类型的任何编译时安全性(即,您可以将string
传递给具有int
PK的实体,并仅在运行时进行查找)。
当然,如果列表足够大,您可能会通过一次带走所有数据而遇到OutOfMemoryException
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.