Gibt das Entitätsframework denselben Objektverweis zurück, wenn ich das "logisch" (in der Datenbank) gleiche Objekt von verschiedenen Stellen abfrage.
Zum Beispiel habe ich den Kunden mit dem Namen Joe Black abgefragt (und nehme an, dass ich jetzt weiß, dass es nur einen Joe Black in der Datenbank gibt.)
Customer c = select ... blabla where ... Name == Joe Black...;
und irgendwo anders im Code habe ich Customer c2 = select... where.. ID==5
abgefragt, wobei 5 die ID von Joe Black ist. Ich weiß, dass sie in der Datenbank auf dasselbe Objekt abgebildet werden, aber ordnen sie auch demselben Objekt in Codeebene zu? Also ist c1 gleich c2? Ich habe Listen, um die logische Gleichheit der Objekte zusammenzuführen und auf logische Gleichheit zu prüfen (ich kann jetzt nicht auf die Datenbank zugreifen) und ich frage mich, ob Entity Framework-Objekte gut damit spielen oder ob ich meine benutzerdefinierten Vergleichsklassen schreiben soll.
Die meisten ORMs, einschließlich Entity Framework und NHibernate, verwenden das Identitätskartenmuster , um sicherzustellen, dass es nur eine einzige Instanz gibt eine gegebene Entität pro Primärschlüssel. Die Identitätskarte wird durch den Kontext definiert, sodass zwei verschiedene Kontexte zwei Objekte erstellen, die sich auf dieselbe Entität beziehen. Es empfiehlt sich, Entitäten mit IEquatable zu implementieren, einschließlich Überschreibungen für Gleichheitsoperatoren, damit '==' oder '! =' Funktionieren. Dies ist mehr als das, was man denken könnte. Werfen Sie einen Blick auf hier Beispiel.
Tags und Links .net c# entity-framework linq