果园非内容一对多的关系

时间:2014-04-29 08:00:00

标签: asp.net-mvc orchardcms orchard-modules

我对乌节来说很新。我想在这里实现的是我的实体之间的关系。所以基本上 ApiConfigurationRecord 应该有一个 ApiParameterRecord 列表。但是当我执行动作时,没有任何东西可以保存。另外,如果它保存,希望它会自动延迟加载它的孩子。顺便说一句,我正在尝试非内容方式(没有ContentPart或ContentPartRecord)。

好的这些是我的代码:

public class ApiConfigurationRecord
{
    public ApiConfigurationRecord()
    {
        if (Parameters == null)
            Parameters = new List<ApiParameterRecord>();
    }

    public virtual int Id { get; set; }

    public virtual string Name { get; set; }

    public virtual string Description { get; set; }

    public virtual IList<ApiParameterRecord> Parameters { get; set; }
}

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

    public virtual string Name { get; set; }
}

public class Migrations : DataMigrationImpl
{
    public int Create()
    {
        SchemaBuilder.CreateTable("ApiConfigurationRecord", table => table
            .Column<int>("Id", column => column.PrimaryKey().Identity())
            .Column<string>("Name", column=> column.NotNull())
            .Column<string>("Description", column => column.WithLength(500))
            );

        SchemaBuilder.CreateTable("ApiParameterRecord", table => table
            .Column<int>("Id", column => column.PrimaryKey().Identity())
            .Column<int>("ApiConfigurationRecord_Id")
            .Column<string>("Name", column => column.NotNull())
            );

        return 1;
    }
}

我的控制器操作:

    public ActionResult TestInsert()
    {

        var record = new ApiConfigurationRecord() { Name = "Test 1", Description = "Some descripton" };
        record.Parameters.Add(new ApiParameterRecord() { Name = "Param1" });
        this.ApiConfigurationRepository.Create(record);

        return Content("Inserted");
    }

1 个答案:

答案 0 :(得分:1)

您需要实际链接这两个项目。

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

    public virtual string Name { get; set; }

    public virtual ApiConfigurationRecord ApiConfigurationRecord { get; set; }
}

至于创作,我不会假设它会自动创建子项目,但我不确定。试试这个:

var record = new ApiConfigurationRecord() { Name = "Test 1", Description = "Some descripton" };
this.ApiConfigurationRepository.Create(record);
var child1 = new ApiParameterRecord() { Name = "Param1", ApiConfigurationRecord = record };
ApiParameterRepository.Create(child1);