Estoy empezando a construir una aplicación, y estoy planeando usar ServiceStack. Solo quiero saber cuáles son las mejores prácticas/buenos enfoques para manejar NHibernate ISession u otros objetos de sesión específicos del contexto "por solicitud".ServiceStack NHibernate Sesión por solicitud
pensé registrar un ISessionFactory en el COI como:
container.Register<ISessionFactory>(sessionFactory);
Y cuando es necesario obtener un nuevo objeto Session ... O tal vez proporcionan el objeto de sesión directamente:
container.Register<ISession>(c => sessionFactory.OpenSession()).ReusedWithin(ReuseScope.None);
O bien manejar la ISession y una transacción predeterminada a través del evento Global.asax BeginRequest:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var session = factory.OpenSession();
ITransaction itrans = session.BeginTransaction();
Context.Items.Add("session", session);
Context.Items.Add("trans", itrans);
}
Entonces, estoy algo perdido, ¿cuáles son las mejores prácticas, dadas las tecnologías anteriores, o similares, como EF u otro marco de servicios de descanso?
Gracias de antemano
¿Puede usted explicar con más detalle cómo se utiliza esto? La documentación de ServiceStack realmente no tiene sentido sobre cómo usar estos ServiceRunners. – slashp
Agregué el código para agregar en el host de su aplicación. No estoy seguro de cómo usar el corredor de servicio del servicio. –
Acabo de ver las solicitudes de más detalles, podría ser demasiado tarde para ser útil, pero tal vez otra persona quiera saber. 'código' clase pública AppHost: AppHostBase { public AppHost(): base (" Servicio ", typeof (AccessService).Asamblea) {} override public void Configurar (contenedor de contenedores) {} public override IServiceRunner CreateServiceRunner (ActionContext ActionContext) {return new BaseServiceRunner (esto, ActionContext); } 'código ' –