LINQ to SQL - нет внешних ключей - PullRequest
3 голосов
/ 24 августа 2010

В базе данных не определены внешние ключи. Итак, я настроил ассоциации.

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

Я могу добраться до 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

Ответы [ 3 ]

1 голос
/ 24 августа 2010
where u.UsersInRoles.Role.Name = "admin"

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

0 голосов
/ 24 августа 2010

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

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

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

0 голосов
/ 24 августа 2010

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

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...