我需要在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();
但是我不知道究竟要注册什么,它在解析存储库时会引发错误。
答案 0 :(得分:0)
在Web服务器上生成线程很糟糕,它降低了同时提供多个请求的能力。您应该考虑将您的任务卸载到其他进程,例如Windows服务,通过示例通过MSMQ进行通信。
否则,请考虑让您的任务实例化并处理它自己需要的服务和会话,而不是使用那些限制在请求生命周期中的服务和会话。您可能需要为此设置一个专用的依赖项解析器,让任务显式控制它向依赖项解析程序请求的对象的生命周期。