giovedì 4 agosto 2016

C# Entity Framework confrontare le proprietà di due entità

Il frammento di codice qui di seguito, illustra una tecnica di come confrontare le proprietà di due oggetti di tipo Entity Framework se hanno lo stesso valore.

 public static bool ConfrontaOggetti(this T ef1, T ef2)
        {
            bool return = true;
            PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public);
           
            foreach (PropertyInfo pi in properties)
            {
                object valore1 = typeof(T).GetProperty(pi.Name).GetValue(ef1, null);
                object valore2 = typeof(T).GetProperty(pi.Name).GetValue(ef2, null);

                if (valore1 is DateTime & valore2 is DateTime)
                {
                    if (valore1 != null & valore2 != null)
                    {
                        if (Convert.ToDateTime(valore1 ).ToShortDateString() != Convert.ToDateTime(valore2 ).ToShortDateString() && (valore1 == null || !valore1.Equals(valore2 )))
                        {

                            return = false;
                            return return ;
                        }
                    }
                    else
                    {

                        if (valore1 != valore2 )
                        {
                            return = false;
                            return return ;
                        }
                    }
                }
                else
                {

                    if (value1 != value2 && (value1 == null || !value1.Equals(value2)))
                    {
                        //proprietà non uguale
                        return = false;
                        return return ;
                    }

                }
            }
            return return ;
        }

Nessun commento: