在Orchard中保存记录集合

时间:2018-01-15 02:10:13

标签: orchardcms orchard-modules

目前我的部分有3个字段(Name,Value1,Value2)。我有一切工作,我可以在零件上创建/编辑/删除。

我现在要做的是拥有一个包含3列(Name,Value1,Value2)的网格,并且可以有多行(最多为用户有多少行)。保存不会发生,直到用户完成(将一行中的所有行保存回来)。

我还没想到需要什么,所以一系列的项目会在回发后保存。

有关如何执行此操作的任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以拥有的是通过让你的dbms创建和管理一对一关系来在部分中包含与(Name,Value1,Value2)相对应的记录集合。

例如,你会有

public class ThisIsYourPart : ContentPart<ThisIsYourPartRecord> {
    // You can access the list of your records as
    // yourPart.Record.YourRecords

}

public class ThisIsYourPartRecord : ContentPartRecord {
    public ThisIsYourPartRecord () {
        YourRecords= new List<YourRecordWithValues>();
    }

    public virtual IList<YourRecordWithValues> YourRecords{ get; set; }
}

public class YourRecordWithValues {
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Value1 { get; set; } // use your actual type
    public virtual ThisIsYourPartRecord  ThisIsYourPartRecord { get; set; }
}

public class YourMigration : DataMigrationImpl {
    public int Create() {

        SchemaBuilder.CreateTable("YourRecordWithValues ", table => table
            .Column<int>("Id", col => col.Identity().PrimaryKey())
            .Column<string>("Name", col => col.NotNull().Unlimited())
            .Column<string>("Value1", col => col.NotNull().Unlimited())
            .Column<int>("ThisIsYourPartRecord_Id"));

        SchemaBuilder.CreateTable("ThisIsYourPartRecord", table => table
            .ContentPartRecord());
    }
}

这样的代码应该这样做。

我们在https://github.com/bleroy/Nwazet.Commerce

中经常使用这种关系

*编辑: 当然,将所有代码放在适当的文件和文件夹中。