Jestem nowy w EF i próbuję użyć metody rozszerzenia, która konwertuje z mojej bazy danych typu User
do mojej klasy informacji UserInfo
.
Najpierw używam bazy danych, jeśli to robi różnicę? poniżejOperacja nie może zostać zakończona, ponieważ DbContext został usunięty błąd
Mój kod daje błąd
Operacja nie może być zakończona, ponieważ DbContext zostało usunięte.
try
{
IQueryable<User> users;
using (var dataContext = new dataContext())
{
users = dataContext.Users
.Where(x => x.AccountID == accountId && x.IsAdmin == false);
if(users.Any() == false)
{
return null;
}
}
return users.Select(x => x.ToInfo()).ToList(); // this line is the problem
}
catch (Exception ex)
{
//...
}
widzę, dlaczego byłoby to zrobić, ale ja też nie rozumiem, dlaczego wynik z którym oświadczenie nie jest zapisywane do obiektu users
?
Zgaduję więc, że moje główne pytanie brzmi: dlaczego to nie działa, a po drugie, jaki jest właściwy sposób stosowania metod rozszerzających i EF?
Dzięki. Teraz widzę, że IQueryable to miejsce, w którym wpadam w kłopoty. Jeśli wstawię użytkowników. Wyselekcjonowanie() ... do instrukcji using daje mi kolejny błąd (chyba inne pytanie). Więc zmieniłem typ zwracania na IEnumerable i to rozwiązało mój problem. –
Colin
Dziękuję, że to działa dla mnie i teraz dowiedziałem się, że IQueryable wymagany aktywny DBContext –