tengo followed the pattern on this site para conectar ninject y nhibernate a mi sitio asp.net-mvc3.¿Cómo debe usar el patrón UnitofWork en mi sitio asp.net-mvc (usando nhibernate y ninject)
Este es el código en mis 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();
}
el tema es que ahora la necesidad de hacer Update() y Add() en mis reguladores;
Tengo esto como mi código del controlador:
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");
}
mi pregunta principal es que se siente mal para pasar en Iunitofwork en el constructor como muchas otras acciones no lo necesitan. Realmente solo lo necesito para las acciones donde realizo actualizaciones y las inserto en mi db. Como estoy usando ninject IOC en el enlace de arriba, parece decir pasar este objeto de unidad de trabajo a través de IOC.
Entonces, ¿hay una manera mejor y más optimizada para usar el patrón UnitOfWork con IOC en asp.net-mvc que llama a beingtransaction para cada método en mi controlador.
Tome un vistazo a [esta] (http://blog.xelibrion.com/journal/2011/4/16/nhibernate-session-management-in-aspnet-mvc -application.html) publicación de blog. – xelibrion