Erhalten entity-Objekt das property-Namen ohne entitycollection und entityreference

Arbeite ich an einer Methode vergleicht zwei Objekte mit der spiegelung. Die Objekttypen sind Objekte, die aus entity framework. Wenn ich GetProperties() ich bin immer EntityCollection-und EntityReference-Eigenschaften. Ich will nur die Eigenschaften, die zum Objekt gehören und nicht alle zugehörigen Eigenschaften oder Verweise von fremden Schlüsseln.

Ich habe versucht, die folgenden Wie alle Namen von Eigenschaften in einer Person?.

Ich dachte an ein array übergeben von Eigenschaften zu vergleichen, aber ich will nicht zu haben, geben Sie Sie in für jeden Objekt-Typ. Ich bin offen für einige Vorschläge, auch diejenigen, die nicht mit Reflexion.

public bool CompareEntities<T>(T oldEntity, T newEntity)
{
    bool same = true;
    PropertyInfo[] properties = oldEntity.GetType().GetProperties();

    foreach (PropertyInfo property in properties)
    {
        var oldValue = property.GetValue(oldEntity, null);
        var newValue = property.GetValue(newEntity, null);

        if (oldValue != null && newValue != null)
        {
            if (!oldValue.Equals(newValue))
            {
                same = false;
                break;
            }
        }
        else if ((oldValue == null && newValue != null) || (oldValue != null && newValue == null))
        {
            same = false;
            break;
        }
    }
    return same;
}
  • Sind diese Entitäten POCOs oder abgeleitet aus EntityObject?
  • abgeleitet von EntityObject
InformationsquelleAutor wsamoht | 2012-01-04
Schreibe einen Kommentar