/// <summary> /// Initializes a new instance of <see cref="SqlSnapshotStore"/> with a custom <see cref="ISnapshotStoreDialect"/>. /// </summary> /// <param name="serializer">The <see cref="ISerializeObjects"/> used to store binary data.</param> /// <param name="settings">The snapshot store settings.</param> /// <param name="dialect">The database dialect associated with this <see cref="SqlSnapshotStore"/>.</param> internal SqlSnapshotStore(ISnapshotStoreDialect dialect, ISerializeObjects serializer, IStoreSnapshotSettings settings) { Verify.NotNull(serializer, nameof(serializer)); Verify.NotNull(settings, nameof(settings)); Verify.NotNull(dialect, nameof(dialect)); this.dialect = dialect; this.serializer = serializer; this.useAsyncWrite = settings.Async; this.replaceExisting = settings.ReplaceExisting; this.buffer = settings.Async ? CreateBuffer(settings, dialect) : null; Initialize(); }
/// <summary> /// Initializes a new instance of <see cref="SqlSnapshotStore"/> with a custom <see cref="ISnapshotStoreDialect"/>. /// </summary> /// <param name="serializer">The <see cref="ISerializeObjects"/> used to store binary data.</param> /// <param name="settings">The snapshot store settings.</param> /// <param name="dialect">The database dialect associated with this <see cref="SqlSnapshotStore"/>.</param> internal SqlSnapshotStore(ISnapshotStoreDialect dialect, ISerializeObjects serializer, IStoreSnapshotSettings settings) { Verify.NotNull(serializer, nameof(serializer)); Verify.NotNull(settings, nameof(settings)); Verify.NotNull(dialect, nameof(dialect)); this.dialect = dialect; this.serializer = serializer; this.useAsyncWrite = settings.Async; this.replaceExisting = settings.ReplaceExisting; this.buffer = settings.Async ? CreateBuffer(settings, dialect) : null; Initialize(); }
/// <summary> /// Creates a <see cref="DataTable"/> based on the required insert/update command parameters. /// </summary> private static DbBatchOperation CreateBuffer(IStoreSnapshotSettings settings, ISnapshotStoreDialect dialect) { using (var command = dialect.CreateCommand(settings.ReplaceExisting ? dialect.ReplaceSnapshot : dialect.InsertSnapshot)) { command.Parameters.Add(dialect.CreateStreamIdParameter(default(Guid))); command.Parameters.Add(dialect.CreateVersionParameter(default(Int32))); command.Parameters.Add(dialect.CreateStateParameter(default(Byte[]))); return(new DbBatchOperation(dialect, command, settings.BatchSize, settings.FlushInterval)); } }
/// <summary> /// Initializes a new instance of <see cref="SqlSnapshotStore"/>. /// </summary> /// <param name="dialect">The database dialect associated with this <see cref="SqlSnapshotStore"/>.</param> /// <param name="serializer">The <see cref="ISerializeObjects"/> used to store binary data.</param> public SqlSnapshotStore(ISnapshotStoreDialect dialect, ISerializeObjects serializer) : this(dialect, serializer, Settings.SnapshotStore) { }
/// <summary> /// Initializes a new instance of <see cref="SqlSnapshotStore"/>. /// </summary> /// <param name="dialect">The database dialect associated with this <see cref="SqlSnapshotStore"/>.</param> /// <param name="serializer">The <see cref="ISerializeObjects"/> used to store binary data.</param> public SqlSnapshotStore(ISnapshotStoreDialect dialect, ISerializeObjects serializer) : this(dialect, serializer, Settings.SnapshotStore) { }
/// <summary> /// Creates a <see cref="DataTable"/> based on the required insert/update command parameters. /// </summary> private static DbBatchOperation CreateBuffer(IStoreSnapshotSettings settings, ISnapshotStoreDialect dialect) { using (var command = dialect.CreateCommand(settings.ReplaceExisting ? dialect.ReplaceSnapshot : dialect.InsertSnapshot)) { command.Parameters.Add(dialect.CreateStreamIdParameter(default(Guid))); command.Parameters.Add(dialect.CreateVersionParameter(default(Int32))); command.Parameters.Add(dialect.CreateStateParameter(default(Byte[]))); return new DbBatchOperation(dialect, command, settings.BatchSize, settings.FlushInterval); } }