Frage

Ich habe eine Tabelle „Bestellungen“ mit einem Foreing-Schlüssel „ProductID“.

Ich möchte die Bestellungen in einem Raster mit dem anzeigen Produktname, ohne LazyLoad für eine bessere Leistung, aber ich benutze es DataLoadOptions es ruft ab alle Produktfelder, die wie ein Nähten wirken Overkill.

Gibt es eine Möglichkeit zum Abrufen? nur der Produktname in der ersten Abfrage?Kann ich ein Attribut in der DBML festlegen?

In diesem Tisch sagt, dass „Fremdschlüsselwerte“ in Linq To SQL „sichtbar“ sind, weiß aber nicht, was das bedeutet.

Bearbeiten:Ich habe den Titel geändert, da ich nicht wirklich sicher bin, ob es keine Lösung gibt.
Ich kann nicht glauben, dass niemand das gleiche Problem hat, es ist ein sehr häufiges Szenario.

War es hilfreich?

Lösung 3

Die Lösung erhalte ich in dieser anderen Frage Welcher .net ORM kann dieses Szenario bewältigen?, das hängt mit dem zusammen liammclennan Antwort, aber klarer (vielleicht war die Frage auch klarer)

Andere Tipps

Was Sie verlangen, ist ein Optimierungsgrad, den Linq-to-SQL nicht bietet.Meiner Meinung nach ist es am besten, eine Abfrage zu erstellen, die genau die gewünschten Daten zurückgibt, möglicherweise als anonymen Typ:

from order in DB.GetTable<Orders>()
join product in DB.GetTable<Products>()
on order.ProductID = product.ID
select new { ID = order.ID, Name = order.Name, ProductName = product.Name };

Wenn Sie in der Linq-Abfrage nur die gewünschten Spalten auswählen und dann .ToList() für die Abfrage aufrufen, wird diese sofort ausgeführt und bringt nur die Spalten zurück, an denen Sie interessiert sind.Wenn Sie beispielsweise Folgendes tun:

var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();

Sie erhalten eine Liste der in den Ergebnissen gespeicherten Produktnamen zurück, und wenn die Abfrage auf dem Server ausgeführt wird, wird nur die Spalte „ProductName“ zurückgegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top