public async Task InsertRecord(IDbRecord record)
        {
            await Task.Run(() =>
            {
                ReinitEngine();
                using (var tran = _engine.GetTransaction())
                {
                    tran.Technical_SetTable_OverwriteIsNotAllowed(_tableName);

                    record.Id = tran.ObjectGetNewIdentity <long>(_tableName);
                    tran.ObjectInsert(_tableName, new DBreezeObject <IDbRecord>
                    {
                        Indexes = new List <DBreezeIndex> {
                            new DBreezeIndex(1, record.Id)
                            {
                                PrimaryIndex = true
                            }
                        },
                        NewEntity = true,
                        //Changes Select-Insert pattern to Insert (speeds up insert process)
                        Entity = record   //Entity itself
                    },
                                      true);
                    tran.TextInsert(_textTableName, record.Id.To_8_bytes_array_BigEndian(), record.GetTextSearchKey());
                    tran.Commit();
                }
            });
        }
 public async Task RemoveRecord(IDbRecord record)
 {
     await Task.Run(() =>
     {
         using (var tran = _engine.GetTransaction())
         {
             tran.ObjectRemove(_tableName, 1.ToIndex(record.Id));
             //remove from text engine too
             tran.TextRemove(_textTableName, record.Id.To_8_bytes_array_BigEndian(), record.GetTextSearchKey());
             tran.Commit();
         }
     });
 }
 public async Task RemoveRecord(IDbRecord record)
 {
     await Task.Run(() =>
     {
         using (var tran = _engine.GetTransaction())
         {
             tran.SynchronizeTables("Tracks", "TracksText", "Playlists", "Albums", "AlbumsText", "PlaylistsText", "PlaylistSongs", "PlaylistSongsText");
             tran.ObjectRemove(_tableName, 1.ToIndex(record.Id));
             //remove from text engine too
             tran.TextRemove(_textTableName, record.Id.To_8_bytes_array_BigEndian(), record.GetTextSearchKey());
             tran.Commit();
         }
     });
 }