Как я могу включить только один экземпляр моего DbContext за запрос в моих контроллерах? - PullRequest
0 голосов
/ 23 января 2019

Мой контроллер нуждается в двух типах обслуживания, и оба должны иметь одинаковый интерфейс dbcontext,

public class MyController : Controller
    {
        protected readonly ISomeService _some;
               protected reaonly IUnitOfWork _unitOfWork

        public MyController(IUnitOfWork unitOfWork, ISomeService some) 
        {
            _some = some;
            _unitOfWork = unitOfWork

        }

// Это моя конфигурация

services.AddDbContext<MyContext>(x =>  
   {

    x.UseSqlServer(Configuration.GetConnectionString("coon"));

  });

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я обнаружил проблему, моя проблема заключалась в том, что я использовал AsyncSaveChanges вместо SaveChanges, но мои сервисы получают тот же самый набор, спасибо всем :)!

0 голосов
/ 23 января 2019

Из документации :

Контексты Entity Framework

Контексты Entity Framework должны быть добавлены в сервисный контейнер используя ограниченную продолжительность жизни. Это обрабатывается автоматически при вызове к методу AddDbContext при регистрации контекста базы данных. Сервисы, которые используют контекст базы данных, должны также использовать область видимости срок службы.

Таким образом, AddDbContext добавит его в качестве времени жизни с заданной областью.

Вы должны убедиться, что контроллеры / или другие места, где это используется, также добавляются в DI как элементы Scoped.

Сервисы с ограниченным сроком службы создаются один раз для каждого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...