#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
}
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
}
- Najlepsze
- Wszystkie komentarze








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