Es sieht so aus, als ob GetObjectKey den Vorteil hat, nach vorhandenen, instanziierten Objekten und DANN nach dem Datenspeicher zu suchen. Aber es scheint auch, wie Sie einige der starke Typisierung verlieren, und benötigen eine resultierende Objekt zu werfen:Abrufen einzelner Entity Framework-Entitäten mithilfe einer LINQ-Abfrage oder GetObjectKey?
GetObjectKey
int customerID = 1;
EntityKey key = new EntityKey("MyEntities.Customers", "CustomerID", customerID);
Customer customer = context.GetObjectByKey(key) as Customer;
gegen LINQ
int customerID = 1;
Customer customer = (from c in context.Customers
where c.CustomerID = customerID
select c).FirstOrDefault();
Ich persönlich ziehe letzteres Methode, wegen der Typisierung. Außerdem wird Ihre DAL ziemlich einheitlich sein, da alle Get-Methoden Abfragen sind, obwohl das nur eine persönliche Präferenz ist.
Was benutzen Sie Jungen und Mädchen?
In der früheren Methode würde ich das "as" Schlüsselwort anstelle der Besetzung verwenden. Wenn das Ergebnis null ist, wird keine Ausnahme ausgelöst. Das as-Schlüsselwort versucht, den Wert zu übergeben, aber wenn es nicht der richtige Typ ist, gibt es stattdessen null. Sie hätten also context.GetObjectByKey (key) als Customer ;. –
Guter Punkt. Ich werde das Beispiel modifizieren, um die Punktzahl ein wenig zu verbessern. –