6
Utilizzo di questo come APIController di base, pensieri? per lo più im curioso di gestione SaveChanges in dispose, contro il metodo ExecuteAsync che ho visto altrove ...Gestione di sessione di base con WebAPI e RavenDB
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Controllers;
using Raven.Client;
using Raven.Client.Document;
public abstract class RavenDbController : ApiController
{
private IDocumentStore _documentStore;
public IDocumentStore Store
{
get { return _documentStore ?? (_documentStore = LazyDocStore.Value); }
set { _documentStore = value; }
}
protected override void Initialize(HttpControllerContext controllerContext)
{
Session = Store.OpenSession();
base.Initialize(controllerContext);
}
protected override void Dispose(bool disposing)
{
using (Session)
{
Session.SaveChanges();
}
}
public IDocumentSession Session { get; set; }
}
sembra grande, io ti do un colpo. –
@FitzchakYitzchaki: Perché dovrei voler utilizzare questo approccio anziché (più semplice) nella domanda? * (Nota: sono un API Web ** e ** principiante RavenDB, quindi è possibile che manchi qualcosa) * –
Perché questo incapsula la funzionalità in un attributo anziché aggiungerlo a un controller di base. Ciò mantiene il controller di base più pulito. –