2009-07-28 2 views
1

Ich frage subsonic nach einer Tabelle in meiner Datenbank. Es gibt die Tabelle zurück und alle anderen verbundenen Tabellen warf Fremdschlüssel,Subsonic 2: Objekt bringt mehrere Datenbanktabellen zurück info

Kann ich nicht aufhören, alle zusätzlichen Tabelleninformationen zurückzubringen?

Hier ist mein Code:

[WebMethod] 
[ScriptMethod] 
public List<DealEquipment> GetDealEquipment(Guid DealID) 
{ 
    List<DealEquipment> dealEquipmentList = new List<DealEquipment>(); 
    Deal deal = new Deal(DealID); 
    DealEquipmentCollection dealEquipmentCollection = deal.DealEquipmentRecords(); 

    foreach (DealEquipment dealEquipment in dealEquipmentCollection) 
    { 
     DealEquipment dealEquipmentTemp = dealEquipment; 
     DealEquipmentSerialNumberCollection dealEquipmentSerialNumberCollection =  new  DealEquipmentSerialNumberCollection().Where(DealEquipmentSerialNumber.Columns.FkDealEquipmentID, Comparison.Equals, dealEquipmentTemp.PkDealEquipmentID).Load(); 
     dealEquipmentTemp.objSerialNumber = new List<DealEquipmentSerialNumber>(); 
     foreach (DealEquipmentSerialNumber dealEquipmentSerialNumber in dealEquipmentSerialNumberCollection) 
     { 
      dealEquipmentTemp.objSerialNumber.Add(dealEquipmentSerialNumber); 
     } 
     dealEquipmentList.Add(dealEquipmentTemp); 
    } 

    return dealEquipmentList; 
} 

Der dealEquipmentList, die ich ist wohl nur zurück zu meinem foreignkey zu Lieferanten enthalten, aber die Lieferanten Tabellen Info ist ebenfalls enthalten.

Dies ist ein Problem, da das Lieferantenobjekt große Binärbilder enthält.

Ich versuche, es auf null zu setzen, aber es wird ignoriert.

Irgendwelche Ideen?

Antwort

2

Es enthält nicht das Objekt. Wenn Sie auf die Eigenschaft Lieferant auf der DealEquipment zugreifen, sendet sie eine neue Anforderung an die Datenbank, um den Lieferanten mit der von Ihnen gewählten ID über FetchByID (int) abzurufen. Sie können sich die generierten Klassen ansehen, um sie mit eigenen Augen zu sehen, wenn Sie möchten.

(Diese Antwort basiert auf der Version 2.1.1.0.)

+0

thankyou für die schnelle Antwort ich bin nicht sicher, dass ich verstehe , was soll ich dann tun? Ich bekomme den maximalen JSON-Längenfehler, wenn ich es einfach verlasse. wenn ich auf das Objekt vor der Rückkehr in die Uhr schaue, sehe ich das Binärbild –

+0

Ich denke, ich verstehe, aber bin mir nicht ganz sicher, wie man damit umgeht. Ich denke, was passiert, wenn die Liste in json konvertiert wird, verwendet das System Reflektion, um auf alle Eigenschaften zuzugreifen. Dies würde den DB-Aufruf auslösen, die zugehörigen Daten abrufen und weiter mit Konvertierungen kaskadieren. Wenn dies der Fall ist, müssen Sie möglicherweise die Eigenschaften, die Sie sehen möchten, in eine eigene Struktur verschieben und diese stattdessen zurückgeben. Nicht eine sehr angenehme Lösung, fürchte ich, aber es ist die einzige, die ich sehe. Vielleicht wird jemand anders antworten und eine Alternative oder eine sicherere Lösung haben. Oder bestätige dies zumindest. – krdluzni

+0

Als zusätzlichen Punkt möchten Sie möglicherweise partielle Klassen nutzen, um eine Funktion hinzuzufügen, die die oben genannte Struktur für die DealEquipment-Klasse generiert. – krdluzni

Verwandte Themen