LINQ-2-SQL verwaltet eine Identitätszuordnung, sodass nachfolgende Aufrufe von entity.First(e => e.Id == id)
keine zusätzlichen Abfragen nach der ersten für einen Kontext verursachen.
Gibt es überhaupt eine Frage an L2S, ob ein bestimmtes Objekt in der Identitätskarte existiert?
Ich frage diese Ursache, da es Unterstützung für .Attach
gibt, die es Ihnen erlaubt, Entitäten an einen Kontext anzuhängen, jedoch wird die Methode eine Ausnahme machen, wenn das Element bereits in der Identitätskarte existiert.
In einem Interoperabilitätsszenario möchte ich möglicherweise Entitäten in einem anderen, schnelleren Orm laden und anhängen, es macht jedoch keinen Sinn, eine Entität nachzuschlagen, wenn sie bereits in der Identitätskarte vorhanden ist.
Kein schöner Weg ... Sie können sich jedoch hineinhacken. Angenommen, Sie haben ein User
-Objekt, von dem Sie wissen, dass es von Id
:
So ziemlich jeder Zugang ist nicht öffentlich; Ich würde erwarten, dass dies performance-mäßig ist, es sei denn, Sie verwenden DynamicMethod
, um den Zugriff von einem anderen Typ zu fälschen.
Und als DynamicMethod
version:
(Ja, ich bin hart codieren zu einem int
key ... Sie könnten es zu einem einzigen Wert machen, indem Sie die int
durch object
ersetzen und nur die OpCodes.Box, typeof(int)
- oder Sie fallen lassen könnte es zu einem params object[]
Argument machen und es direkt übergeben)
Tags und Links .net c# linq-to-sql