1
我刚刚完成创建使用LINQ to SQL进行数据访问的自定义角色提供程序。您需要为提供者编写的一项功能是从角色中删除用户;LINQ to SQL多对多比较查询
public void RemoveUsersFromRoles(string[] usernames, string[] rolenames);
现在一种方法是;
- 回报的角色列表
- 迭代每个角色和删除具有该角色的所有用户角色
这种方法很不高效的,我想知道是否有更好的在LINQ to SQL中处理这类问题的方法。
有什么办法可以在LINQ to SQL中创建一个select语句,它将采用字符串数组进行比较,而不是循环并生成N个选择项?任何比我上面描述的更好的方法将非常感激。
表涉及:
User (RecordID, Username)
Role (RecordID, Rolename)
UsersInRole (RoleID,UserID)
谢谢!
只是为了改进你的代码: 我很容易在该查询中写出完整的单词,以使其* far *更具可读性:u => user,r => role,uir => usersInRole。 – 2009-08-05 16:11:52
我仍然必须循环查询每个用户和角色? – Lukasz 2009-08-05 16:58:18
否..该查询将返回与您的方法的参数中指定的任何用户+角色组合相匹配的所有UsersInRole记录。您只需运行一次查询即可获取(或删除,如我的示例)相关记录。 – 2009-08-05 17:17:16