2010-08-24 4 views
3

В базе данных нет внешних ключей. Поэтому у меня есть настройки ассоциаций.LINQ to SQL - Нет внешних ключей

проблема: не могу показаться, чтобы иметь возможность ссылаться на таблицу ролей, как и ожидалось:

я могу получить, насколько u.UserNamesInRole то не может сделать прыжок в роли стола.

IEnumerable<fmwebapp1.Old_App_Code.TelerikUsersDataContext.User> userList = (from u in dbTelerik.Users 
where u.UsersInRoles.Role.Name = "admin" 
select u.UsersInRoles); 

alt text

ответ

0

В многие-ко-многим, когда я хочу результаты только с одной стороны, фильтруется значений с другой стороны, я обычно начинаю свой запрос в середине соотношения:

Чтобы получить роль-х пользователей:

var users = from ur in context.UsersInRole 
      where ur.Role.Name == "admin" 
      select ur.User; 

чтобы получить роли пользователя:

var roles = from ur in context.UsersInRole 
      where ur.User.UserName == "Jon" 
      select ur.Role 
+0

Это было именно то, что я искал .. ура! –

1
where u.UsersInRoles.Role.Name = "admin" 

Это неправильный синтаксис. Вам нужно ==.

0

было бы проще всего добавить отношения FK в базе данных и реимпорт таблицы. EF выполнит всю работу за вас.

Если это невозможно, попробуйте добавить Association из Role в User, а затем установить ассоциации имя набора для UsersInRole. Удалите объект UsersInRole от дизайнера.

Вы также можете сравнить файл EDMX, созданный при импорте «правильных» отношений FK между двумя таблицами, с тем, что у вас есть в вашем EDMX, а затем вручную отредактируйте XML для соответствия.

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