ADO.NET Entity Framework: отношения QUERY n-n - PullRequest
0 голосов
/ 20 марта 2009

У меня есть четыре таблицы:

  • Клиент с PK ClientID .
  • Адресат с PK DestinationID .
  • Язык с PK LanguageID .
  • DestinationDetail с PK DestinationID .
  • RL-Client-Destination с PK ClientID и DestinationID .

Клиент может иметь ноль или n пунктов назначения. У пункта назначения есть n DestinationDetails, каждый из этих DestinationDetail имеет язык.

Ok. Мне нужно получить все DestinationDetails для данного клиента и данного языка.

Я написал это (я не знаю, работает ли он), но, возможно, есть лучший способ:


    ObjectQuery clientQuery =
       guiaContext.Client.Where("it.email = @email",
           new ObjectParameter("email", "xxx@example.com"));

    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);
        }
     }

Я изучаю ADO.NET Entity Framework.

Спасибо!

1 Ответ

0 голосов
/ 21 марта 2009

Это ответ:


var db = new PracticeEntities();
var destinations = db.DestinationDetails.
          Where(dd => dd.Language.Lang == "en-US" &&
          dd.Destination.Client.Any(c => c.Email == "abc@yahoo.com"));

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...