/// <summary> /// Добавить копию среза в таблицу /// </summary> /// <remarks>Если в таблице уже существует срез с заданной меткой времени, /// то в него копируются данные из исходного среза</remarks> public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT) { if (srcSrez == null) { throw new ArgumentNullException("srcSrez"); } Srez srez; SrezTableLight.Srez lightSrez; if (SrezList.TryGetValue(srezDT, out lightSrez)) { // изменение существующего в таблице среза srez = (Srez)lightSrez; // возможно исключение InvalidCastException srez.CopyDataFrom(srcSrez); if (srez.State == DataRowState.Unchanged) { srez.State = DataRowState.Modified; ModifiedSrezList.Add(srez); } } else { // создание и добавление нового среза в таблицу srez = new SrezTable.Srez(srezDT, srcSrez); srez.State = DataRowState.Added; AddedSrezList.Add(srez); SrezList.Add(srezDT, srez); } return(srez); }
/// <summary> /// Add a copy of the slice to the table /// </summary> /// <remarks>If there is already a slice in the table with the specified time stamp, /// then data is copied from the original slice</remarks> public Srez AddSrezCopy(Srez srcSrez, DateTime srezDT) { if (srcSrez == null) { throw new ArgumentNullException(nameof(srcSrez)); } Srez srez; if (SrezList.TryGetValue(srezDT, out SrezTableLight.Srez lightSrez)) { // change existing slice in the table srez = (Srez)lightSrez; // InvalidCastException possible srez.CopyDataFrom(srcSrez); if (srez.State == DataRowState.Unchanged) { srez.State = DataRowState.Modified; ModifiedSrezList.Add(srez); } } else { // creating and adding a new slice to the table srez = new Srez(srezDT, srcSrez) { State = DataRowState.Added }; AddedSrezList.Add(srez); SrezList.Add(srezDT, srez); } return(srez); }
/// <summary> /// Отметить срез как добавленный /// </summary> public void MarkSrezAsAdded(Srez srez) { if (srez != null) { if (dataLoading) { srez.State = DataRowState.Unchanged; } else { srez.State = DataRowState.Added; srez.Position = -1; AddedSrezList.Add(srez); } } }