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