Mam followed the pattern on this site do podpięcia ninject i nhibernate do mojej strony asp.net-mvc3.Jak powinieneś używać wzorca UnitofWork na mojej stronie asp.net-mvc (przy użyciu nhibernate i ninject)
Oto kod w moich 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();
}
problem jest to, że teraz trzeba zrobić update() i Add() w moim kontrolerów;
mam to jako mój kod kontrolera:
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");
}
moim głównym pytaniem jest to, że czuje się źle przechodzą w Iunitofwork w konstruktorze jak wiele innych działań nie trzeba go. Naprawdę potrzebuję tego tylko dla akcji, w których robię aktualizacje i wstawiam do mojej bazy danych. Ponieważ używam ninja IOC na powyższym łączu, wydaje się, że przekazuję ten obiekt unitofwork przez IOC.
Czy istnieje lepszy, bardziej zoptymalizowany sposób korzystania z wzorca UnitOfWork z IOC w asp.net-mvc, który wywołuje betransakcję dla każdej metody w moim kontrolerze.
przyjrzeć [to] (http://blog.xelibrion.com/journal/2011/4/16/nhibernate-session-management-in-aspnet-mvc -application.html) wpis na blogu. – xelibrion