2009-07-29 3 views
1

Я создал модель с Entity Framework из трех таблиц базы данных:Entity Framework ассоциации

  1. агентов
  2. AgentsGroups
  3. группы

AgentsGroups простая таблица с тремя столбцами: 1 id и два внешних ключа, связывающих агенты и группы (каждый агент может иметь несколько групп). Довольно простой материал.

Entity Framework правильно распознает отношения между таблицей. Теперь, с LINQPad я могу получить имена всех групп, связанных с агентом, начиная с агента ID:

from a in Agents 
    join ag in AgentsGroups on a.Code equals ag.AgentCode 
    join g in Groups on ag.GroupCode equals g.Code 
    where a.Code == 10199 
    select g.Name 

Это, однако, не работает на самой программе, как, на самом деле, AgentCode и GroupCode отображаются как ассоциации, а не поля.

Я предполагаю, что мне нужно использовать Include, но я никогда не использовал его, поэтому запрошенная помощь: как я мог бы перевести данное полурабочее выражение linq в аналогичное выражение, выдающее имена групп, но используя ассоциации?

Заранее спасибо

+0

Непонятно, почему запрос, как указано, не будет работать. В чем именно проблема? –

ответ

2

Намного проще в EF:

from a in Agents 
where a.Code == 10199 
from g in a.Groups 
select g.Name 

Вы почти никогда не используют присоединиться к EF.

+0

привет, спасибо за ответ, но данное выражение дало мне ВСЕ строки в группе .. где ассоциация? означает ли это подразумеваться? – pistacchio

+0

Посмотрите внимательно на квалификаторы (например, например). Это не подразумевается, просто мало. Я догадывался об имени свойства ассоциации; вы, возможно, назвали это чем-то другим. –