Beispiel #1
0
        /// <summary>
        /// 迁移数据。
        /// </summary>
        /// <param name="version">版本:0表示安装到最新,-1卸载!</param>
        public async Task MigrateAsync(int version = 0)
        {
            await _reposority.EnsureMigrationTableExistsAsync();

            foreach (var migration in _migrations)
            {
                try
                {
                    var operations = await LoadMirationsAsync(migration, version);

                    if (!operations.Any())
                    {
                        continue;
                    }

                    foreach (var operation in operations)
                    {
                        if (!await _reposority.ExecuteAsync(operation, operation.Operations))
                        {
                            break;
                        }
                    }
                }
                catch (Exception exception)
                {
                    Logger.LogError(999, string.Format(Resources.MigrationError, exception.Message), exception);
#if DEBUG
                    Logger.LogError(exception.StackTrace);
#endif
                    throw;
                }
            }
        }