У меня есть четыре таблицы:
- Клиент с 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.
Спасибо!