Работа с EntityFramework и Ninject Мне нужно распоряжаться контекстом каждый раз, когда завершается вызов хранилища.Мне это нужно каждый раз, когда вместо базы контекста EF делается новый вызов базы данных.
Вот мой репозиторий для тестирования:
public class VehicleRepositoryTest : IVehicleRepository
{
private DBEntities _context;
public VehicleRepositoryTest(DBEntities context)
{
_context = context;
}
....
public List<TB_VEHICULO> GetAll()
{
return _context.TB_VEHICULO.ToList();
}
А вот какя реализую модуль ninject.Я использую «IntransientScope» с идеей удаления контекста после каждого вызова:
Kernel.Bind<DBEntities>().ToSelf().InTransientScope();
Kernel.Bind<IVehicleRepository>().To<Test.VehicleRepositoryTest>().InTransientScope();
Идея состоит в том, что каждый раз при вызове «GetAll ()» создается новый контекст, поэтому каждый раз при вызовебаза данных сделана.
но она не работает.Если я сделаю вызов «GetAll ()» и предложу, я получу данные A;затем я изменяю в базе данных A на данные B, делаю новый вызов "GetAll ()", я все еще получаю данные A.
Дополнительная информация:
Myприложение является приложением WinForms, для вызова экземпляров внедренных объектов я использую шаблон композиции:
public static class CompositionRoot
{
public static IKernel kernel { get; private set; }
public static void WireModule(INinjectModule module)
{
kernel = new StandardKernel(module);
}
public static T Resolve<T>()
{
return kernel.Get<T>();
}
}
, и вызов в хранилище выглядит следующим образом:
_vehicleRepository = CompositionRoot.Resolve<IVehicleRepository>();
var test = _vehicleRepository.GetAll();