6
Sử dụng điều này làm cơ sở APIController, suy nghĩ? chủ yếu là im tò mò về xử lý SaveChanges trong dispose, so với phương pháp ExecuteAsync mà tôi đã nhìn thấy ở đâu đó ...Xử lý phiên cơ bản với WebAPI và 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; }
}
sẽ rất tốt, tôi sẽ cho nó một shot. –
@ FitzchakYitzchaki: Tại sao tôi muốn sử dụng điều này thay vì cách tiếp cận (dễ nhìn) trong câu hỏi? * (Lưu ý: Tôi là một Web API ** và ** RavenDB mới bắt đầu, vì vậy nó có thể là tôi đang thiếu một cái gì đó) * –
Bởi vì điều này đóng gói các chức năng trong một thuộc tính hơn là thêm nó vào một bộ điều khiển cơ sở. Điều này giúp bộ điều khiển cơ bản sạch sẽ hơn. –