Я работаю над веб-API .NET Core, и у меня есть одна конечная точка, в которой я хочу параллельно выполнить три операции. Все трое используют одну и ту же базу данных, поэтому мне нужно три копии DbContext. Я создал простой класс Factory, который позже внедрил в свой класс «Данные».
Возможно ли (если это возможно, то это хорошая практика) внедрить DbContext в мой фабричный класс (с использованием встроенного .NET Core IoC), и когда кто-то вызывает метод CreateMyDbContext, просто глубоко клонируйте тот, который был введен в начале?
РЕДАКТИРОВАТЬ:
Вот пример с пулом DbContext:
public class FooData : IFooData
{
private readonly Func _func;
public FooData(Func func)
{
_func = func;
}
public async Task GetApples()
{
using (var wrapper = _func())
{
var apples = await wrapper.Context.Apples.FromSqlRaw("SELECT.... complicated query").ToListAsync();
return apples;
}
}
public async Task GetOranges()
{
using (var wrapper = _func())
{
var oranges = await wrapper.Context.Oranges.FromSqlRaw("SELECT.... complicated query").ToListAsync();
return oranges;
}
}
}
public class FooService
{
private readonly IFooData _fooData;
public FooData(IFooData fooData)
{
_fooData = fooData;
}
public async Task GetFruits()
{
var appleTask = _fooData.GetApples();
var orangeTask = _fooData.GetOranges();
(var result1, var result2) = await (appleTask, orangeTask).WhenAll();
// ...
}
}
Подробнее здесь: https://stackoverflow.com/questions/616 ... isting-one