/// <summary> /// Saves an event into the store /// </summary> /// <param name="event">The event to be saved</param> protected override void _Save(DomainEvent @event) { var eventType = @event.GetType(); var tableName = this.Settings.UseSingleTable ? "Events" : eventType.Name; using (var connection = new SqlConnection(this.Settings.ConnectionString)) { connection.CreateOrUpdateTable(@event, eventType, tableName, this.Settings.AutoIncrementalTableMigrations, this.Settings.UseCompression, this.Settings.UseSingleTable); } var parametersData = @event.GetParametersData(eventType, this.Settings.UseCompression, this.Settings.UseSingleTable); var parameters = parametersData.Select(ParameterDataExtensions.ToSqlParameter); var commandText = Commands.BuildInsertCommandText(tableName, parametersData.Select(t => t.Name).ToArray(), parameters.Select(parameter => parameter.ParameterName).ToArray()); using (var connection = new SqlConnection(this.Settings.ConnectionString)) { connection.ExecuteNonQuery(commandText, parameters); } }