我不是果园大师。我是一个桌面应用程序的人,有很多责任继承了大量的Orchard代码,并且已经完成了一些维护工具。我试过谷歌搜索互联网无济于事,所以我转向Stack,绝望地试图有人拥有 easy 按钮......
基本上(这是一个过于简化的用例) - 我们经常让用户注册错误的电子邮件地址或在一天之内忘记他们的帐户信息或再次注册,但胖手指密码,然后第三次注册,等等......
我有一个维护控制台,允许管理员找到'数据(在我们自己的非果园sql表中)与第一个或第二个帐户(在我的示例中)相关联,并将该数据与第三个'当前/正确的'重新关联。帐户。
在重新映射结束时,我想以编程方式清理(读取:删除)前两个帐户的Orchard登录,这两个帐户现在正式为kruft。
我在Stack here上找到了一些关于Orchard用户帐户的信息:
用户是内容类型,Orchard为每个人创建内容项 用户。当您创建新用户时,Orchard会将记录添加到 xxx_Orchard_Users_UserPartRecord, xxx_Orchard_Framework_ContentItemRecord, xxx_Orchard_Framework_ContentItemVersionRecord和 xxx_Orchard_Roles_UserRolesPartRecord如果您将任何角色链接到 用户。
xxx_Orchard_Framework_ContentItemVersionRecord表保持跟踪 版本号的编号以及是否发布了内容项 与否,以及哪个版本的已发布内容项是最新版本。
删除用户时,Orchard不会删除该记录 表,但只是创建一个新版本记录并设置发布和 新版本和旧版本的最新列为0。因为 内容项没有发布和最新版本 显示在用户列表中。
我理解概念,但我无法删除用户,要求我删除其中每个'私人'果园里的桌子。相反,我希望有一个类/方法/技术来删除内容类型或部分或记录或其他任何东西(我仍然没有找到Orchard对象直接命名)。
是否有人可以共享代码中删除用户的示例(通过ID或用户名或电子邮件)?或者指出我的相关文件?我在这里像捞出的水一样摸索着......
一如既往,提前谢谢!
答案 0 :(得分:2)
正如你所说,在Orchard中,大多数来自UI的删除都是软删除,保留所有数据并在数据库中设置一个标志,说明这个人被删除了。要以编程方式执行此操作,其中_contentManager
是IContentManager
的实例。
var userItem = _contentManager.Get<IUser>(userId);
_contentManager.Remove(userItem);
进行硬删除,删除项目记录,所有项目版本记录和所有内容部分记录(titlepart,userpart等)
var userItem = _contentManager.Get<IUser>(userId);
_contentManager.Destroy(userItem);
这是在1.9版本中添加到orchard中的。