public void BulkInsert <TRow>(string tableName, List <TRow> rows) where TRow : class, new() { var tableLock = GetTableLock(tableName); Utils.LockedAction(tableLock, () => { if (rows == null || !rows.Any()) { return; } var rowsString = _serializer.SerializeRows(rows); if (string.IsNullOrWhiteSpace(rowsString)) { return; } var tableFilePath = GetTableFilePath(tableName); _cacheProvider.BulkInsert(tableName, rows); File.AppendAllText(tableFilePath, rowsString); }); }