Files
mixtape/zero.Core/Persistence/ZeroDocumentSession.cs
T
2021-12-03 14:45:49 +01:00

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; }
}