private bool MapValues(IMapOverride overrider, ResultRow row, T repoNode) { try { return(DbRowMapper.Map(row, repoNode, overrider)); } catch (Exception ex) { return(LogError("DbRowMapper.Map", ex)); } //Debug_n("DbRowMapper.Map success", ""); }
public static bool Map <T>(ResultRow source, T target, IMapOverride mapOverride = null) { foreach (var kv in source) { var nme = kv.Key; var val = kv.Value; if (mapOverride?.HasOverride(nme) ?? false) { val = mapOverride.OverrideValue(nme, val); } var ok = SetProperty(target, nme, val); if (!ok) { return(false); } } return(true); }
private bool ApplyChangesToRepo(RecordSetShim sqlResult, IEnumerable <NodeRecordHash> nodeRecHashes, IMapOverride overrider) { //Info_n("Applying changes to repo...", ""); var tblKey = DbColAttribute.Key <T>()?.Property?.Name; if (tblKey.IsBlank()) { return(Error_n($"DbCol (IsKey=true) attribute missing from ‹{typeof(T).Name}›", "")); } if (_deleteIfNotInSqlDB) { foreach (var d7n in nodeRecHashes) { if (!FoundIn(sqlResult, tblKey, d7n)) { _writr.DeleteLater(_writr[d7n.nid]); } } } var hashField = D7HashFieldAttribute.FindIn <T>(); foreach (var row in sqlResult) { var tweakdRow = TweakSqlRow(row); var dbRecID = tweakdRow.AsInt(tblKey); var dbRowSha1 = _serialr.SHA1(tweakdRow); var repoNode = new T(); var d7RecHash = nodeRecHashes.FirstOrDefault(x => x.dbID == dbRecID); if (d7RecHash != null) { repoNode = _writr[d7RecHash.nid]; if (repoNode == null) { return(Error_n("Nid found in hash-json BUT NOT in repo-json.", "You may need to clear/reload the repo.")); } } if (dbRowSha1 != d7RecHash?.sha1) { if (!MapValues(overrider, tweakdRow, repoNode)) { return(false); } hashField?.ModelProperty? .SetValue(repoNode, dbRowSha1, null); } if (d7RecHash == null) { _writr.AddLater(repoNode); } } return(true); }