如何在自己的记录中保存用户引用

时间:2014-05-07 03:36:31

标签: orchardcms orchardcms-1.7

我在这里要实现的是将当前用户实例保存在 ApiConfigurationRecord 表中。我已经在互联网上挖掘,大部分示例都是使用 UserPartRecord 。但我遇到的问题是获取 UserPartRecord 对象本身。

这是我的实体类看起来像:

public class ApiConfigurationRecord
{
    public virtual int Id { get; set; }

    public virtual string Name { get; set; }

    public virtual UserPartRecord RegisterBy { get; set; }
}

这是我的Migration.cs代码,如下所示:

    public int Create()
    {
        SchemaBuilder.CreateTable("ApiConfigurationRecord", table => table
            .Column<int>("Id", column => column.PrimaryKey().Identity())
            .Column<int>("RegisterBy_id")
            .Column<string>("Name", column => column.NotNull())
            );

        return 1;
    }

这是我的动作控制器代码:

    public ActionResult Test()
    {
        var userId = this._orchardServices.WorkContext.CurrentUser.Id;
        // below code got error: The non-generic method IContentManager.Query() cannot be used with type arguments
        this._orchardServices.ContentManager.Query<UserPart, UserPartRecord>().Where(u => u.Id == userId);

        return null;
    }

几个小时我都陷入了这个问题。需要知道如何保存此用户关系对象,最重要的是,获取对象本身。请指导我。

2 个答案:

答案 0 :(得分:2)

或者你可以做到

_orchardServices.WorkContext.CurrentUser.As<UserPart>().Record;

虽然你可能想检查用户也不是null。正如Bertrand Le Roy所说,你也需要

using Orchard.ContentManagement;

使用.As扩展方法。

答案 1 :(得分:1)

我的超能力告诉我你在控制器文件上缺少以下内容:

using Orchard.ContentManagement;

Query方法的通用版本是此命名空间中的扩展方法。