Gibt es eine Möglichkeit, ein Element in der L2S-Identitätskarte nachzuschlagen?

8

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.

    
Sam Saffron 30.05.2011, 01:30
quelle

1 Antwort

6

Kein schöner Weg ... Sie können sich jedoch hineinhacken. Angenommen, Sie haben ein User -Objekt, von dem Sie wissen, dass es von Id :

codiert ist %Vor%

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)

%Vor%     
Marc Gravell 30.05.2011, 06:48
quelle

Tags und Links