SQL - c#中的交叉连接

时间:2016-10-10 07:52:02

标签: c# sql cross-join

我目前遇到了问题,因为我的操作时间很长!

我的sql中有两个表。

- Users
- Objects

有访问权限,可以使用函数dbo.AccessRight(objId, userId)计算。

在我的C#代码中,我需要所有带有用户列表的对象。例如:

*Object 1*: Id, Name, AnyPropertie, List<User>

为了实现这一点,我目前正在获取所有对象,迭代它们并添加所有用户,如下所示:

foreach (var o in Objects)
{
    o.Users = GetAllUsersWithAccess(o.Id);
}

如何在不循环的情况下实现它?目前,60k物体需要大约5分钟。

编辑1:

GetAllUsersWithAccess代码:

public HashSet<long> GetAllUsersWithAccess(long id)
{
    var results = new HashSet<long>(Database.SqlQuery<long>("use database; select Id from dbo.Users where dbo.AccessRight(@p0, Id) > 0;", id));
    return result;
}

0 个答案:

没有答案