2009-03-20 8 views
0

I ont quatre tableaux:ADO.NET Entity Framework: relations QUERY n-n

  • Client PK ClientID.
  • Destination avec PK ID de destination.
  • Langue avec PK LanguageID.
  • DestinationDetail avec PK ID de destination.
  • RL-Client-Destination avec PK ClientID et ID de destination.

Le client peut avoir zéro ou n destinations. Une destination a n DestinationDetails, chacun de ces DestinationDetail a une langue.

Ok. J'ai besoin de récupérer tous les DestinationDetails pour un client donné et une langue donnée.

j'ai écrit cela (je ne Kown si cela fonctionne), mais peut-être il y a une meilleure façon:

 

    ObjectQuery clientQuery = 
     guiaContext.Client.Where("it.email = @email", 
      new ObjectParameter("email", "[email protected]")); 

    Client client = clientQuery.First(); 

    client.Destination.Load(); 
    EntityCollection destinations = client.Destination; 

    ObjectQuery languageQuery = 
     guiaContext.Language.Where("it.ds_language = @languageDS", 
     new ObjectParameter("languageDS", "en-US")); 
    Language language = languageQuery.First(); 

    foreach (Destination dest in destinations) 
    { 
     dest.DestinationDetail.Load(); 
     EntityCollection details = dest.DestinationDetail; 
     foreach (DestinationDetail detail in details) 
     { 
      detail.Language = language; 
      Console.WriteLine("Destination: " + detail.ds_destinationName); 
     } 
    } 
 

J'apprends ADO.NET Entity Framework.

Merci!

Répondre

0

Voici la réponse:

 

var db = new PracticeEntities(); 
var destinations = db.DestinationDetails. 
      Where(dd => dd.Language.Lang == "en-US" && 
      dd.Destination.Client.Any(c => c.Email == "[email protected]")); 
 

Merci!

Questions connexes