Вы должны переместить ContentDbContext
наружу для повышения производительности.
Это просто потому, что вам нужен только один context
на запрос.
Один DbContext на веб-запрос. .. почему?
using (var dbContext = new ContentDbContext())
{
foreach (var item in parser.GetNextContent())
{
string key = item.Key;
string id = dbContext.Contents.Find(key).ObjectId;
item.Id = id;
// Assign other fields...
yield return item;
}
}
Обновлено
Вы также можете присоединиться, а затем убедиться, что все данные извлекаются одновременно
// You need to fetch all `item.Key` from `parser.GetNextContent()` to get all data in `dbContext.Contents`
var keys = parser.GetNextContent().Select(p => p.Key).ToArray();
var result = (from content in dbContext.Contents
join key in keys on content.Id equals key
select new
{
Id = content.ObjectId,
//....
}
Если вы используете C# 8, оператор использования может выглядеть следующим образом:
using var dbContext = new ContentDbContext();
foreach (var item in parser.GetNextContent())
{
string key = item.Key;
string id = dbContext.Contents.Find(key).ObjectId;
item.Id = id;
// Assign other fields...
yield return item;
}