In my database I made two different tables for objects, let's say OBJECT, and ORIGINAL_OBJECT(in French, in example it is Repere), the only difference between them is ORIGINAL_OBJECT has not any column where I save the modifies made.
I have a function that gets me all the fields :
public Repere Select_detail_repere(string query)
{
Repere det = null; ;
if (this.OpenConnection() == true)
{
IDataReader dataReader = ExecuteReader(query);
while (dataReader.Read())
{
det = new Repere();
det.Name = (dataReader["DET_NOM"] ?? string.Empty).ToString().Trim();
det.Modifies = dataReader["MODIFICATIONS"].ToString().Trim();
det.Profil = (dataReader["DET_PRF"] ?? string.Empty).ToString().Trim();
det.Matiere = (dataReader["DET_MAT"] ?? string.Empty).ToString().Trim();
det.GroupeProfil = (dataReader["DET_GRP_PRF"] ?? string.Empty).ToString().Trim();
det.Longueur = double.Parse(dataReader["LONGUEUR"].ToString().Trim());
det.Largeur = double.Parse(dataReader["DET_LARGE"].ToString().Trim());
det.Hauteur = double.Parse(dataReader["DET_HAUT"].ToString().Trim());
det.Poids = double.Parse(dataReader["DET_PDS"].ToString().Trim());
det.Angle1 = double.Parse(dataReader["ANG_AME_1"].ToString().Trim());
det.Angle2 = double.Parse(dataReader["ANG_AME_2"].ToString().Trim());
det.AngleAile1 = double.Parse(dataReader["ANG_AILE_1"].ToString().Trim());
det.AngleAile2 = double.Parse(dataReader["ANG_AILE_2"].ToString().Trim());
det.PercageString = (dataReader["PERCAGE"] ?? string.Empty).ToString().Trim();
det.ScribingString = (dataReader["SCRIBING"] ?? string.Empty).ToString().Trim();
det.Mark = (dataReader["MARK"] ?? string.Empty).ToString().Trim();
det.ContInt0 = (dataReader["CONT_INT"] ?? string.Empty).ToString().Trim();
det.ContExt0 = (dataReader["CONT_EXT"] ?? string.Empty).ToString().Trim();
det.Revision = (dataReader["REVISION"] ?? string.Empty).ToString().Trim();
}
this.CloseConnection();
}
return det;
}
I use the same function for both OBJECT and OBJECT_ORIGINAL. But when I want to read my OBJECT_ORIGINAL, I meet an error that says the field doesn't exist (obviously).
I already met the same problem in other situations, as this function will only work if I use SELECT *
(if I don't read all columns this will return an error).
Until now the only way I found to solve it is using try/catch (in the catch I will apply a default value, ID=-1
for example), but I feel as it is not a very correct solution, and looking for another way to do that.