private Easy.Version GetDbVersion(DbContext dbContext) { Easy.Version version = null; try { version = dbContext.Set <DBVersion>().Find(DBVersionRecord); } catch (Exception ex) { _logger.LogInformation("Getting database version failed. {0}", ex.Message); } if (version == null) { version = Easy.Version.Parse(_dbVersionOption.Value.BaseVersion); } return(version); }
private IEnumerable <string> ReadRemoteScripts(Easy.Version versionFrom, Easy.Version versionTo) { List <string> sqlScripts = new List <string>(); ReleaseVersion releaseVersion = GetReleaseVersions(); if (releaseVersion == null) { return(sqlScripts); } foreach (var item in releaseVersion.Versions) { var version = Easy.Version.Parse(item.Version); if (version > versionFrom && version <= versionTo) { sqlScripts.AddRange(GetUpdateScripts(item)); } } return(sqlScripts); }
public bool UpdateDatabaseToVersion(DbContext dbContext, Easy.Version versionTo) { Easy.Version versionFrom = GetDbVersion(dbContext); if (versionFrom < versionTo) { _logger.LogInformation("Try to update database to version: {0}.", versionTo); try { IEnumerable <string> sqlScripts = ReadRemoteScripts(versionFrom, versionTo); bool isSuccess = ExecuteScripts(dbContext, sqlScripts); if (isSuccess) { versionFrom.Major = versionTo.Major; versionFrom.Minor = versionTo.Minor; versionFrom.Revision = versionTo.Revision; versionFrom.Build = versionTo.Build; if (versionFrom is DBVersion) { dbContext.Set <DBVersion>().Update(versionFrom as DBVersion); } dbContext.SaveChanges(); return(true); } else { return(false); } } catch (Exception ex) { _logger.LogError(ex, ex.Message); } } return(true); }