更多的概念问题......是否有任何理由在像这样的 foreach 循环中对我的 DataContext 进行异步调用是一个坏主意?
private async Task ProcessItems(List<Item> items)
{
var modifiedItems = new List<modifiedItem>();
foreach (var item in items)
{
// **edited to reflect link between items and properties**
// var properties = await _context.Properties
// .Where(p => p.Condition == true).ToListAsync();
var properties = await _context.Properties
.Where(p => p.Condition == item.Condition).ToListAsync();
foreach (var property in properties)
{
// do something to modify 'item'
// based on the value of 'property'
// save to variable 'modifiedItem'
modifiedItems.Add(modifiedItem)
}
}
await _context.ModifiedItems.AddRangeAsync(modifiedItems);
await _context.SaveChangesAsync();
}
由于内部 foreach 循环依赖于properties变量,它是不是在properties变量完全实例化后才开始?
由于modifiedItems变量是在父 foreach 循环之外声明的,将每个异步添加modifiedItem到modifiedItems列表中是不是一个坏主意?
实体框架、Linq 中是否有任何属性/方法,或者更适合此类任务的任何属性/方法?比做嵌入式 foreach 循环更好的主意?
(如果有人想要一些上下文...... IRL,items是来自传感器的读数列表。并且properties是将原始读数转换为有意义的数据(例如不同单位的体积和重量)的数学方程......然后这些计算出的数据点正在存储在数据库中。)
达令说
HUWWW
慕尼黑的夜晚无繁华
相关分类