Представление с несуществующим соединением для использования в Entity Framework - PullRequest
1 голос
/ 25 августа 2011

Мне нужно создать представление в SQL Server и использовать его в GridView на моей .aspx странице.Представление отображается в моем приложении через Entity Framework.

Вот мой пример:

SELECT User.UserName, User.UserId
FROM User 
WHERE NOT EXISTS (SELECT UsersInRoles.RoleId FROM UsersInRoles 
WHERE UsersInRoles.UserId = User.UserId AND UsersInRoles.RoleId = 'AdminRole')

Отношение между таблицами User и UsersInRoles одно-ко-многим.

Мне нужно иметь возможность передать значение AdminRole в моем приложении ASP.NET.

Я не могу использовать параметры в представлении (то есть использование @Role недопустимо).

Только * представления и таблицы могут связываться с GridView, поэтому хранимая процедура (где параметр может быть параметром) здесь не годится.

Есть ли обходной путь для использования LEFT OUTER JOIN, возможно, вместоиз NOT EXISTS?Таким образом, имея JOIN в таблице UsersInRoles, я могу сопоставить поля с UsersInRoles через Entity Framework в моем приложении и добавить туда условия (с предложением EntityDataSource.Where).

Ответы [ 2 ]

1 голос
/ 25 августа 2011

Для Exists используйте метод расширения Any в LINQ. Для не существует, используйте! Любой.

var query = from user in User
            where !user.UsersInRoles.Any(role => role.RoleId == 'AdminRole')
            select new {user.UserName, user.UserId};
0 голосов
/ 25 августа 2011

Я новичок в EF, но я знаю, что мы можем использовать хранимые процедуры (или функции) в нем.

Попробуйте прочитать это

...