2009-06-10 4 views
1

J'ai 3 tables dans ma base de données: InvoiceDetailLineType, InvoicingCategory, CalculationRule.Linq-to-entities La méthode Include ne charge pas les enregistrements associés

InvoiceDetailLineType a des clés étrangères pour InvoicingCategory et CalculationRule.

Je souhaite récupérer une liste de tous les objets InvoiceDetailLineType pour une catégorie donnée et inclure les objets CalculationRule et InvoicingCategory associés.

Voici ma méthode pour faire ceci:

public List<InvoiceDetailLineType> GetAllForCategory(InvoicingCategory category) 
{ 
    return (from InvoiceDetailLineType lineType in ContextHelper.Entities.InvoiceDetailLineType.Include("CalculationRule").Include("InvoicingCategory") 
      where lineType.InvoicingCategory.IdInvoicingCategory == category.IdInvoicingCategory 
      select lineType).ToList(); 
} 

je me attends ce pour me donner ce que je dois, mais ce que je reviens est un objet dont CalculationRule est nul. J'ai vérifié que les clés étrangères sont correctement configurées et que les enregistrements existent dans la base de données, donc cela semble un peu étrange.

Ai-je raté quelque chose?

Merci d'avance.

Répondre

3

Ok, je l'ai trouvé une solution:

public List<InvoiceDetailLineType> GetAllForCategory(InvoicingCategory category) 
{ 
    ObjectQuery<InvoiceDetailLineType> lineTypeQuery = ContextHelper.Entities.InvoiceDetailLineType.Include("CalculationRule").Include("InvoicingCategory"); 
    return lineTypeQuery.Where(t => t.InvoicingCategory.IdInvoicingCategory == category.IdInvoicingCategory).ToList(); 
} 

Pas encore tout à fait sûr pourquoi le code inital j'avais ne fonctionnait pas, si quelqu'un peut jeter une certaine lumière pour être complet, je vous en serais reconnaissant .

+0

MISE À JOUR: J'ai aussi découvert que le code d'origine fonctionne, tant que je ne précise pas explicitement le type de « type de ligne » comme InvoiceDetailLineType. Maintenant, je me demande pourquoi c'est :) –