UserInfoProvider.DeleteUser()vs DeleteData(whereCondition)

时间:2016-11-21 17:35:16

标签: kentico

我知道DeleteUser()会运行删除所有关系的程序等。具有where条件的私有内部DeleteData是否也会删除所有关系,还是会尝试从表中删除主记录?如果存在任何关系数据会引发错误吗?

1 个答案:

答案 0 :(得分:1)

如果您致电UserInfoProvider.DeleteData(),则不会删除相关数据。它只是执行对象的删除SQL查询。它甚至不会查找cms.user.removedependencies查询。

另一方面,在info对象上调用DeleteData()会导致相关数据被删除。

如果您需要批量删除用户,请先使用对象查询从数据库中检索它们(确保限制列,UserID应该足够)。然后遍历在每个集合上调用Delete()的集合。

foreach (var user in UserInfoProvider.GetUsers().Where("UserEnabled=0").Columns("UserID").TypedResult.Items)
{
    user.Delete();
}