我在这里要实现的是将当前用户实例保存在 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;
}
几个小时我都陷入了这个问题。需要知道如何保存此用户关系对象,最重要的是,获取对象本身。请指导我。
答案 0 :(得分:2)
或者你可以做到
_orchardServices.WorkContext.CurrentUser.As<UserPart>().Record;
虽然你可能想检查用户也不是null。正如Bertrand Le Roy所说,你也需要
using Orchard.ContentManagement;
使用.As扩展方法。
答案 1 :(得分:1)
我的超能力告诉我你在控制器文件上缺少以下内容:
using Orchard.ContentManagement;
Query
方法的通用版本是此命名空间中的扩展方法。