Question

What I'm trying to achieve here is to save the current user instance in my ApiConfigurationRecord table. I already dig around the internet, and most of the example is using UserPartRecord. But the troble I encounter is to get the UserPartRecord object itself.

This is my Entity class look like:

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

    public virtual string Name { get; set; }

    public virtual UserPartRecord RegisterBy { get; set; }
}

This is my Migration.cs code look like:

    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;
    }

This is my Action Controller codes:

    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;
    }

For hours I stuck in this problem. Need to know how to save this User relationship object, and most importantly, get the object itself. Please guide me.

Was it helpful?

Solution 2

My super-powers tell me that you are missing the following on top of your controller file:

using Orchard.ContentManagement;

The generic version of the Query method is an extension method that is in this namespace.

OTHER TIPS

Or you could just do

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

Though you will probably want to check user is not null there too. And as Bertrand Le Roy says, you will also need

using Orchard.ContentManagement;

to make use of the .As extension method.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top