У меня последовал за шаблоном на этом сайте, чтобы подключить ninject и nhibernate к моему сайту asp.net-mvc3.
Вот код в моем файле global.aspx.cs:
internal class ServiceModule : NinjectModule
{
public override void Load()
{
var helper = new NHibernateHelper(connectionString);
Bind<ISessionFactory>().ToConstant(helper.SessionFactory)
.InSingletonScope();
Bind<IUnitOfWork>().To<UnitOfWork>()
.InRequestScope();
Bind<ISession>().ToProvider(new SessionProvider())
.InRequestScope();
Bind<IIntKeyedRepository<FAQ>>().To<Repository<FAQ>>()
.InRequestScope();
}
проблема в том, что теперь мне нужно обновлять() и Add() в моих контроллерах;
У меня это как мой код контроллера:
public FAQController(IIntKeyedRepository<FAQ> faqRepository, IUnitOfWork unitOfWork)
{
_faqRepository = faqRepository;
_unitOfWork = unitOfWork;
}
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult AddFAQ(FAQ contact)
{
var c = new FAQ {Question = contact.Question, Answer = contact.Answer};
_faqRepository.Add(c);
_unitOfWork.Commit();
return RedirectToAction("Index");
}
Мой главный вопрос заключается в том, что он ошибочно передается в Iunitofwork в конструкторе, поскольку многие другие действия ему не нужны. Мне действительно нужно это для действий, где я делаю обновления и вставляет в свой db. Поскольку я использую ninject IOC по ссылке выше, кажется, что передал этот объект unitwork через IOC.
Итак, есть ли более оптимизированный способ использования шаблона UnitOfWork с IOC в asp.net-mvc, который вызывает вызов для каждого метода в моем контроллере.