创建果园会话

时间:2017-07-02 13:25:28

标签: asp.net-mvc nhibernate orchardcms

我需要在orchard cms中的分离线程中操作数据。 问题是当请求结束会话和服务被处置时。 创建数据库会话的最佳方法是什么,或者在请求完成后如何使用数据进行操作?

编辑:

我正在尝试这样的代码

var builder = new ContainerBuilder(); builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope(); //builder.RegisterInstance(_shellSettings = new ShellSettings { Name = ShellSettings.DefaultName }); builder.RegisterType<TransactionManager>().As<ITransactionManager>().InstancePerLifetimeScope(); builder.RegisterType<SessionFactoryHolder>().As<ISessionFactoryHolder>().InstancePerLifetimeScope();

但是我不知道究竟要注册什么,它在解析存储库时会引发错误。

1 个答案:

答案 0 :(得分:0)

在Web服务器上生成线程很糟糕,它降低了同时提供多个请求的能力。您应该考虑将您的任务卸载到其他进程,例如Windows服务,通过示例通过MSMQ进行通信。

否则,请考虑让您的任务实例化并处理它自己需要的服务和会话,而不是使用那些限制在请求生命周期中的服务和会话。您可能需要为此设置一个专用的依赖项解析器,让任务显式控制它向依赖项解析程序请求的对象的生命周期。