2009-07-28 4 views
1

Je demande subsonic pour une table dans ma base de données. Il retourne la table et toutes les autres tables connectées ont jeté des clés étrangères,Subsonic 2: l'objet renvoie plusieurs tables de base de données info

Je ne peux pas l'arrêter en ramenant toutes les informations de table supplémentaires?

Voici mon 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; 
} 

Le dealEquipmentList que je retourne est supposé contenir que mon foreignkey au fournisseur, mais les tables des fournisseurs d'information est également inclus.

Ceci est un problème car l'objet fournisseur contient d'énormes images binaires.

J'essaie de le définir sur null mais il est ignoré.

Des idées?

Répondre

2

Il ne contient pas réellement l'objet. Ce qui se passe est que lorsque vous accédez à la propriété Fournisseur sur DealEquipment, il envoie une nouvelle requête à la base de données pour récupérer le fournisseur avec l'ID que vous avez choisi, via FetchByID (int). Vous pouvez regarder les classes générées pour voir de vos propres yeux, si vous le souhaitez.

(Cette réponse est basée sur la version 2.1.1.0.)

+0

Merci pour la réponse rapide je ne suis pas sûr que je comprends Que dois-je faire? j'obtiens l'erreur maximum de longueur de json si je la laisse juste. quand je regarde l'objet avant de retourner dans la montre, je vois l'image binaire –

+0

Je pense que je comprends, mais je ne suis pas entièrement certain de la façon de le gérer. Je pense que ce qui se passe est que lorsque la liste est convertie en json, le système utilise la réflexion pour accéder à toutes les propriétés. Cela déclencherait l'appel de la base de données, récupèrerait les données associées et continuerait à cascader avec les conversions. Si cela est vrai, vous devrez peut-être déplacer les propriétés que vous souhaitez voir dans une structure de votre choix et les retourner à la place. Je ne suis pas une solution très agréable, j'en ai peur, mais c'est la seule que je vois. Peut-être que quelqu'un d'autre répondra et aura une alternative, ou une solution plus certaine. Ou au moins confirmer celui-ci. – krdluzni

+0

En guise de point supplémentaire, vous pouvez utiliser des classes partielles pour ajouter une fonction qui génère la structure mentionnée ci-dessus à la classe DealEquipment. – krdluzni

Questions connexes