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(),
});
}
}
}
}
}
}