Working Asynchronously
The RavenDB client API supports executing the common operations asynchronously, so lengthy operations don't have to be blocking. This is also how the RavenDB Silverlight client is working.
The TPL support is using System.Threading.Tasks
, a good intro to which can be found here.
var entity = new Company {Name = "Async Company #2", Id = "companies/2"};
using (var session = documentStore.OpenAsyncSession())
{
var company = await session.LoadAsync<Company>(1); // loading an entity asynchronously
await session.StoreAsync(entity); // in-memory operations are committed asynchronously when calling SaveChangesAsync
await session.SaveChangesAsync(); // returns a task that completes asynchronously
var query = session.Query<Company>()
.Where(x => x.Name == "Async Company #1")
.ToListAsync(); // returns a task that will execute the query
}