Linq to Entities: многие ко многим присоединяются к таблице и представлению - PullRequest
0 голосов
/ 15 июня 2010

У меня есть несколько таблиц и вид:

Таблицы:
- aspnet_Roles (с RoleId и другими столбцами)
- Status (с StatusId и другими столбцами)
- RoleStatus (с RoleId и StatusId и связями)

Когда я создаю файл EDMX Linq To Entities, он создает 2 сущности со свойством Status List в aspnet_Roles и списком aspnet_Roles в Status.
Пока все хорошо.

Но теперь у меня есть представление с колонкой StatusId.

Я хочу создать запрос LINQ с соединением между этим представлением и таблицей aspnet_Roles, чтобы добавить столбец RoleName в набор результатов.

В SQL это будет что-то вроде:

Select a.*, aspnet_Roles.RoleName From SearchView a
INNER JOIN RoleStatus ON a.StatusId = RoleStatus.StatusId
INNER JOIN aspnet_Roles ON RoleStatus.RoleId = aspnet_Roles.RoleId

Но я не могу найти, как это сделать в LINQ to Entities. Проблема в том, что у меня никогда нет доступа к RoleId или StatusId, так как эти поля "заменены" свойствами списка aspnet_Roles и Status.

Итак, я получаю LINQ, например:

from avis in ctx.SearchView 
join joinedRoles in ctx.aspnet_Roles
on avis.StatusId equals joinedRoles.Status. (and then what ??)

Поскольку статус - это список, я не могу найти ничего, что соответствует StatusId.

Я думаю, что делаю что-то неправильно, но я не знаю, где.

1 Ответ

1 голос
/ 15 июня 2010

Во-первых, я рекомендую перейти на EF4; они добавили «ассоциации внешних ключей», так что теперь у нас есть поля * Id в дополнение к ссылкам.

Во-вторых, ваше представление сопоставлено с сущностью в конструкторе? Должна быть возможность добавить связь между представлением и таблицей состояния. (Я на самом деле не сделал это с целью, но я считаю, что это будет работать).

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