J'ai le followed the pattern on this site pour connecter ninject et nhibernate à mon site asp.net-mvc3.Comment utiliser le modèle UnitofWork sur mon site asp.net-mvc (en utilisant nhibernate et ninject)
Voici le code dans mes 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();
}
la question est que je dois maintenant faire de mise à jour() et Add() dans mes contrôleurs;
Je possède ce que mon code de contrôleur:
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");
}
ma question principale est qu'il se sent mal à passer Iunitofwork dans le constructeur que de nombreuses autres actions ne ont pas besoin. Je n'en ai vraiment besoin que pour les actions où je fais des mises à jour et des insertions dans mon db. Puisque j'utilise le CIO de ninject sur le lien ci-dessus, il semble dire de passer cet objet unitofwork à travers IOC. Donc, y a-t-il une meilleure façon d'optimiser l'utilisation du pattern UnitOfWork avec IOC dans asp.net-mvc qui appelle beingtransaction pour chaque méthode de mon controller.
Jetez un oeil à [ce] (http://blog.xelibrion.com/journal/2011/4/16/nhibernate-session-management-in-aspnet-mvc -application.html) article de blog. – xelibrion