52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Raven.Client.Documents;
|
|
using Raven.Client.Documents.Session;
|
|
|
|
namespace zero.Persistence;
|
|
|
|
public class ZeroDocumentSession : AsyncDocumentSession, IZeroDocumentSession
|
|
{
|
|
public IZeroDocumentSession Core { get; private set; }
|
|
|
|
public IDocumentSession Synchronous => _synchronous ?? (_synchronous = DocumentStore.OpenSession(DatabaseName));
|
|
|
|
IDocumentSession _synchronous;
|
|
|
|
public ZeroDocumentSession(DocumentStore documentStore, Guid id, SessionOptions options, string coreDatabase = null) : base(documentStore, id, options)
|
|
{
|
|
if (coreDatabase.HasValue())
|
|
{
|
|
Core = new ZeroDocumentSession(documentStore, id, new SessionOptions()
|
|
{
|
|
Database = coreDatabase,
|
|
DisableAtomicDocumentWritesInClusterWideTransaction = options.DisableAtomicDocumentWritesInClusterWideTransaction,
|
|
NoCaching = options.NoCaching,
|
|
NoTracking = options.NoTracking,
|
|
RequestExecutor = options.RequestExecutor,
|
|
TransactionMode = options.TransactionMode
|
|
});
|
|
}
|
|
else
|
|
{
|
|
Core = this;
|
|
}
|
|
}
|
|
|
|
public bool IsDisposed { get; set; }
|
|
|
|
public override void Dispose()
|
|
{
|
|
_synchronous?.Dispose();
|
|
base.Dispose();
|
|
}
|
|
}
|
|
|
|
|
|
public interface IZeroDocumentSession : IAsyncDocumentSession
|
|
{
|
|
IZeroDocumentSession Core { get; }
|
|
|
|
IDocumentSession Synchronous { get; }
|
|
|
|
bool IsDisposed { get; }
|
|
}
|