1

我需要在 SQL Server 中创建一个视图并GridView在我的.aspx页面上使用它。该视图通过实体框架映射到我的应用程序中。

这是我的例子:

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一个存储过程(参数可以是一个选项)在这里不好。

有没有一种解决方法来使用 a LEFT OUTER JOINMaybe 而不是NOT EXISTS?这样,JOIN在表上有一个,我可以通过我的应用程序中的实体框架UsersInRoles映射字段,我可以在那里添加条件(with子句)。UsersInRolesEntityDataSource.Where

4

2 回答 2

1

对于 Exists,使用 LINQ 中的 Any 扩展方法。对于不存在,使用 !Any。

var query = from user in User
            where !user.UsersInRoles.Any(role => role.RoleId == 'AdminRole')
            select new {user.UserName, user.UserId};
于 2011-08-25T12:44:37.457 回答
0

我是 EF 的新手,但我知道我们可以在其中使用存储过程(或函数)。

试试看这个

于 2011-08-25T11:03:59.390 回答