2009-06-24 18 views
2

ich die Dataload bin mit dem Benutzer abzurufen, die einem Kunden Details modifiziert,Auswählen von Spalten in Dataload

DataLoadOptions dlo = new DataLoadOptions(); 
dlo.LoadWith<Customer>(c => c.ModifiedBy); 

Ich möchte jedoch nur die Benutzer-ID und den Vor- und nicht alle Spalten. Gibt es eine Möglichkeit, die gewünschten Spalten in den DataLoadOptions anzugeben?

Tables:

Customer (ID, FirstName, LastName, Email, ModifiedByUserID etc) 
User (ID, FirstName, LastName, etc) 

Antwort

1

Ich glaube nicht, dass es eine Möglichkeit, die Spalten der Angabe mit DataLoadOptions zu laden.

Es gibt eine DataLoadOptions.AssociateWith Methode, mit der Sie die Menge der abgerufenen Daten begrenzen können, aber dies ist in Bezug auf Datensätze.

Wenn dies möglich war, musste das System irgendwie wissen, dass ein Datensatz nur mit einer bestimmten Anzahl von Spalten geladen wurde. Wenn die nicht geladenen Spalten in Zukunft angefordert werden, müsste Linq nur diese Spalten aus der Datenbank abrufen. Ich denke nicht, dass Linq dazu in der Lage ist.

1

Sie können es nicht programmatisch angeben, wie Sie es formuliert haben, aber Sie können es sicherlich tun - wenn Ihr Ziel ist, Spalten zu minimieren.

Dataload

options.LoadWith<OrderInfo>(OrderInfo => OrderInfo.SourceSystemOrderDetails); 
options.LoadWith<OrderInfo>(OrderInfo => OrderInfo.Packages); 

Abfrage

var orders = context.OrderInfo.Select(x => new 
       { 

        ID = x.SourceSystemOrderDetails.OrderId, 
        Name = x.SourceSystemOrderDetails.Name, 
        PackageCount = x.Packages.Count() 

       }).ToArray(); 

Dies wird Ihnen ein anonymes Objekt geben. In der Datenbank werden nur die angegebenen Spalten zurückgegeben. Sie können auch hier Ihr Business-Objekt erstellen, wenn Sie möchten.

Verwandte Themen