Я работаю над веб-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
Могу ли я клонировать DbContext из существующего? ⇐ C#
Место общения программистов C#
-
Anonymous
1715291045
Anonymous
Я работаю над веб-API .NET Core, и у меня есть одна конечная точка, в которой я хочу параллельно выполнить три операции. Все трое используют одну и ту же базу данных, поэтому мне нужно три копии DbContext. Я создал простой класс Factory, который позже внедрил в свой класс «Данные».
Возможно ли (если это возможно, то это хорошая практика) внедрить DbContext в мой фабричный класс (с использованием встроенного .NET Core IoC), и когда кто-то вызывает метод CreateMyDbContext, просто глубоко клонируйте тот, который был введен в начале?
[b]РЕДАКТИРОВАТЬ:[/b]
Вот пример с пулом 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();
// ...
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/61601511/can-i-clone-dbcontext-from-existing-one[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия