|
using System;
using Raven.Client.Client;
using Raven.Database;
namespace Raven.Client.Document
{
public class DocumentStore : IDocumentStore
{
private readonly string server;
private readonly int port;
public IDatabaseCommands DatabaseCommands{ get; set;}
public event Action<string, int, object> Stored;
public DocumentStore(string server, int port) : this()
{
this.server = server;
this.port = port;
}
public DocumentStore()
{
Conventions = new DocumentConvention();
}
public string Identifier { get; set; }
public string DataDirectory { get; set; }
public DocumentConvention Conventions { get; set; }
#region IDisposable Members
public void Dispose()
{
Stored = null;
if (DatabaseCommands != null)
DatabaseCommands.Dispose();
}
#endregion
public IDocumentSession OpenSession()
{
var session = new DocumentSession(this, DatabaseCommands);
session.Stored += entity => { if (Stored != null) Stored(server, port, entity); };
return session;
}
public IDocumentStore Initialise()
{
try
{
if (String.IsNullOrEmpty(server))
{
var embeddedDatabase = new DocumentDatabase(new RavenConfiguration {DataDirectory = DataDirectory});
embeddedDatabase.SpinBackgroundWorkers();
DatabaseCommands = new EmbededDatabaseCommands(embeddedDatabase);
}
else
{
DatabaseCommands = new ServerClient(server, port);
}
}
catch (Exception)
{
Dispose();
throw;
}
return this;
}
public void Delete(Guid id)
{
DatabaseCommands.Delete(id.ToString(), null);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I've been a software developer since 1996 and have enjoyed C# since 2003. I have a Bachelor's degree in Computer Science and for some reason, a Master's degree in Business Administration. I currently do software development contracting/consulting.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.