Мне нужно сделать несколько вызовов дб, для каждого клиента есть одна дб.так как я не уверен, с каким клиентом мне нужно запрашивать, я должен найти соответствующую запись, проверяя каждую базу данных.В базе данных будет только одна соответствующая запись, и если я найду соответствующую запись, я смогу просто вернуть эту запись и прекратить искать запись и вернуться.Этот поиск продолжается до тех пор, пока я не найду соответствующую запись, если не просто верну пустой объект.
Я хочу знать, как сделать несколько асинхронных вызовов в цикле foreach и разорвать цикл, если я найду данные.
Я попытался перебрать все вызовы и сделать вызовы, чтобы вернуть Задачи, добавить их в список задач и запустить все задачи одновременно.Но я не понял, как сохранить данные, если какой-либо из вызовов вернется и продолжится без дальнейших вызовов.
ContextFactory class
public List<ISomeContext> GetCotrakContextList()
{
List<ISomeContext> someContext = new List<ISomeContext>();
CotrakContextCollections cotrakContext = new
CotrakContextCollections();
foreach (ConnectionStringSettings c in
ConfigurationManager.ConnectionStrings)
{
if(c.Name.StartsWith("Cotrak"))
{
cotrakContext.Add(_someContext(c.Name));
}
}
return someContext;
}
Сервисный уровень
List<SomeClass> someList = new List<SomeClass>();
var list = new List<Task>();
try
{
using (var someContexts = instContextfactory.GetSomeContextList())
{
foreach (var someContext in someContexts)
{
list.Add(new Task(someContext.someClass.GetSomethingById(Id)));
}
// I need to add the result to from the call to list.
Task.WaitAll(list.ToArray());
}
// Need to make validations on the list from above foreach loop
if (someList.Count != 1)
{
Result = someList.Any() ? "MULTI" : "NODATA";
}
}
catch (Exception ex)
{
log.Error($"Error looking for record", ex);
}
У меня есть список вызовов БД, которые мне нужно пройти по циклу и получить результат списка типов объектов.Только одна БД будет иметь соответствующие записи, и если я найду данные, я могу прекратить совершать вызовы к другим БД.
Мне нужно сделать асинхронные вызовы в список БД и вернуть объект или нуль из него.