У меня нет проблем, например, здесь:
using FooContext context = new FooContext();
context.RemoveRange(context.FooTable);
context.SaveChanges();
Но я действительно получаю здесь ObjectDisposedException, когда я использую 'using директиву' либо с блоком (с {}, как до C # 8.0), либо с помощьюнаписание новой формы без {}.
DbSet<FooThing> allResults;
using (FooContext context = new FooContext())
{
allResults = context.FooTable;
}
return allResults;
И снова, никаких проблем со следующим:
FooContext context = new FooContext();
return context.FooTable;
В чем проблема с моим кодом и как я могу использовать директиву usingбез исключений?
РЕДАКТИРОВАТЬ:
Теперь я пытаюсь использовать DI. Я создал элемент скаффолдинга, выбрав «... используя Entity Framwork» в меню в VS.
В классе, который был создан VS, у меня есть экземпляр класса DbContext вверху:
private readonly FooContext _context;
public FooController(FooContext context)
{
_context = context;
}
Я могу использовать этот объект, кажется, нет проблем с ним.
Но теперь я получаю:
System.InvalidOperationException: Unable to resolve service for type '<Namespaces of my app here>.FooContext' while attempting to activate '<Namespaces of my app here>.FooController'.
Я думаю,это потому, что я не вводил тип в соответствующий контейнер. Где мне это сделать?
Стоит ли здесь что-то делать?
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}