Wpis z mikrobloga

#programowanie #csharp #webdev Cześć mirki takie pytanie mam dotyczące dependency injection. Mam utworzone sobie jakieś repozytorium, i w kontrolerze chciałbym sobie z niego skorzystać:

private readonly IFlatsRepository context;

public FlatsController(IFlatsRepository context)
{
context = context;
}

Z kontrolera wywołuje się najpierw jedna metoda korzystająca z repo, a następnie ona wywołuje inną, która również z repo korzysta. No i tu pojawia się zgrzyt: An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

W jaki sposób powinno się to rozplanować, żeby nie było problemu? Nie mogę znaleźć sposobu na zwolnienie tego contextu po wykonaniu pierwszej z metod.

Same metody wyglądają +/-

public async Task CreateSth(SthViewModel model)
{
// wywoływanie różnych metod z repo
return Ok(entity);
}

No i to co zwraca powyższa metoda, przesyłane jest do metody poniższej:

public async Task SthElse(EntityViewModel model)
{
// wywoływanie metod z repoo
}
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@DrizztDoUrden:
Tu chodzi o to, że użyłeś context #1 żeby dostać jakieś entity w bazie.
Później to entity przekazałeś gdzieś dalej a kontekst #1 skończył swój żywot.
Następnie pewnie używasz nowy context (#2) i w jakiś sposób powiązujesz entity ściągnięte przez #1 do #2.
Jako, że entity może być używane tylko w kontekście pojedynczego context to wywala ci
  • Odpowiedz