2009-09-11 5 views
0

У меня есть следующие таблицы базы данных:Entity Framework v1 Моделирование Многие-ко-многим таблицы поиска Отношения

Table1: Пользователь
UserId
Имя пользователя

TABLE2: Роль
Идентификатор роли
RoleName

Таблица3: UserRole
UserId
RoleId

Пользователь может иметь много ролей, а роль может иметь много пользователей. Когда я моделирую это с помощью EF, я получаю объект User со списком объектов UserRole. То, что я хочу, - это Пользователь со списком объектов Role.

Есть ли способ смоделировать это или запросить через LINQ, чтобы вернуть объект User и объекты Role, к которым они принадлежат?

Благодаря
Dirk

ответ

0

Если моделировать многие-ко-многим, таблица в середине не будет появляться в вашей концептуальной модели. (т. е. у вас не будет класса «UserRole», полученного из «EntityObject»)

Если вы используете мастер EF, убедитесь, что в вашей таблице «UserRole» есть только эти два поля и другие. Также убедитесь, что вы создали ограничения внешнего ключа для обоих полей. если у вас есть, то мастер создаст правильное отношение «многие ко многим».

Запрос то, возможно, выглядит как

using(MyObjectContext context = new MyObjectContext(someParameters)){ 
    var theUser = (from user in context.UserSet 
        where user.UserId = XY 
        select user).First(); 
    theUser.Roles.Load(); 
} 
+0

По какой-то причине (дух!) Я поставил столбцы аудита в таблице UserRole, поэтому, конечно, это моделируется многие ко-многим неправильно. После того как я удалил столбцы аудита, он правильно отобразился. Спасибо за ответ. – Dirk

+0

Вы можете также использовать отношения many-2-many в таблицах с более чем только полями fk (если эти другие поля не нужны в вашем приложении). Но для этого вам нужно глубоко вникать в xml-код файла edmx. – Chrigl

Смежные вопросы