6
Używanie tego jako podstawowego APIControllera, myśli? przeważnie jestem ciekaw obsługi SaveChanges w zbyć, w porównaniu z metodą ExecuteAsync które widziałem gdzie indziej ...Podstawowa obsługa sesji z WebAPI i 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; }
}
wygląda świetnie, będę dać mu szansę. –
@FitzchakYitzchaki: Dlaczego miałbym używać tego zamiast (łatwiejszego) podejścia w pytaniu? * (Uwaga: jestem Web API ** i ** RavenDB dla początkujących, więc możliwe, że czegoś brakuje) * –
Ponieważ to enkapsuluje funkcjonalność w atrybucie, zamiast dodawać ją do kontrolera bazowego. Dzięki temu sterownik podstawowy jest bardziej czysty. –