Collection обновление, изменение и удаление

Есть такая идея, загружать данные с SQL в Collection<T>, обновлять каждые пару минут и использовать эту Collection в разных местах софта и работать с ней. В итоге не нужно поястонно загружать полностью данные, если они уже есть. Данные загружаю с помощью процедуры. Но, столкнулся с такой проблемой, что делать с данными которыx к примеру больше нету в SQL, как правильно иx обновлять и синхронизировать с таблицой SQL. Пока что имею такой код:

Создал Collection<T>

static public class NewsData
  {
     private static SqlDataReader _sqlDataReader = null;

private static List<MyData> _news = new List<MyData>();
public static List<MyData> _News { get => _news; set => _news = value; }

public class MyData : IEquatable<MyData>
{
  public int ID { get; set; }
  public string Title { get; set; }
  public string Author { get; set; }
  public string Description { get; set; }
  public string Date { get; set; }
  public override bool Equals(object obj)
  {
    if (obj == null) return false;
    MyData objAsPart = obj as MyData;
    if (objAsPart == null) return false;
    else return Equals(objAsPart);
  }
  public override int GetHashCode()
  {
    return ID;
  }

  public bool Equals(MyData other)
  {
    if (other == null) return false;
    return (this.ID.Equals(other.ID));
  }
  // Should also override == and != operators.
}

Дальше загружаю в нее данные и если данные уже есть, обновляю иx

public static void LoadNews()
{
  if (ConnectionValidator.ConnectionValidator.State)
  {
    using (SqlConnection cn = ConnectionValidator.ServerConnection.dbConnection_Launcher())
    {
      SqlCommand _sqlCommand = new SqlCommand("Get_StartseiteNews", cn);
      _sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
      _sqlDataReader = _sqlCommand.ExecuteReader();

      if (_sqlDataReader.HasRows)
      {
        while (_sqlDataReader.Read())
        {
          if (GetExistNews((int)_sqlDataReader["ID"]))
          {
            _News[GetNewsIndex((int)_sqlDataReader["ID"])].Title = _sqlDataReader["Title"].ToString();
            _News[GetNewsIndex((int)_sqlDataReader["ID"])].Description = _sqlDataReader["Description"].ToString();
          }
          else
          {
            _News.Add(new MyData()
            {
              ID = (int)_sqlDataReader["ID"],
              Title = _sqlDataReader["Title"].ToString(),
              Author = _sqlDataReader["Author"].ToString(),
              Description = _sqlDataReader["Description"].ToString(),
              Date = _sqlDataReader["Date"].ToString(),
            });
          }
        }
      }
    }
  }
}

Ответы (0 шт):