【发布时间】:2023-12-09 15:49:01
【问题描述】:
我有 followed the pattern on this site 将 ninject 和休眠连接到我的 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();
}
问题是我现在需要在我的控制器中执行 Update() 和 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 感觉不对,因为许多其他操作不需要它。我只真正需要它来执行更新和插入数据库的操作。由于我在上面的链接上使用了 ninject IOC,因此似乎要通过 IOC 传递这个 unitofwork 对象。
那么,在 asp.net-mvc 中使用带有 IOC 的 UnitOfWork 模式是否有更好更优化的方法,它确实为我的控制器中的每个方法调用beingtransaction。
【问题讨论】:
-
看看this的博文。
标签: nhibernate asp.net-mvc-3 ioc-container ninject unit-of-work