Передайте аргумент времени выполнения от контроллера к конкретному классу домена для выполнения хранимой процедуры, используя ninject
Здравствуйте, я пытаюсь безуспешно передать аргумент времени выполнения от контроллера к конкретному классу, используя ninject 3
Хранимая процедура в классе контекста базы данных, которая вызывается из конкретного класса, нуждается в аргументе ProductGroupId.
public class ProductDetailController : Controller
{
private IProductDetailRepository productDetailRepository;
public static Guid _ProductGroupId
{
get; set;
}
public ProductDetailController(IProductDetailRepository productDetailRepository)
{
this.productDetailRepository = productDetailRepository;
}
public RedirectToRouteResult ProceedToProductDetailView(Guid ProductGroupId, string returnUrl)
{
_ProductGroupId = ProductGroupId;
return RedirectToAction("Index", new { returnUrl });
}
}
Как вы можете видеть, ProductGroupId передается в контроллер и затем устанавливается в свойстве.
Затем класс NinjectDependancyResolver.cs получает аргумент, необходимый конкретному классу.
private void AddBindings()
{
kernel.Bind<IProductRepository>().To<EFProductRepository>();
kernel.Bind<IProductDetailRepository>().To<EFProductDetailRepository>()
.WhenInjectedInto<ProductDetailController>()
.WithConstructorArgument("ProductGroupId", ProductDetailController._ProductGroupId);
}
Конкретный класс EFProductDetailRepository.cs готов вызвать класс контекста базы данных для запуска хранимой процедуры, но при вызове контекста ему необходим ProductGroupId из контроллера. Я добавил это значение в привязку ninject, как мне получить к нему доступ, чтобы оно могло быть передано в класс контекста из конкретного класса?
public class EFProductDetailRepository : IProductDetailRepository
{
EFDbContext context = new EFDbContext();
public IEnumerable<ProductDetail> ProductDetail
{
// context.getProductDetailsFromSP() needs ProductGroupId from the controller/ninject binding!
get { return context.getProductDetailsFromSP(); }
}
}