Orchard NHibernate Model,更新对象

时间:2014-01-20 12:55:57

标签: c# nhibernate orchardcms-1.7

希望以前没有问过,但这是我的问题。我像这样创建我的模型:

public class Survey
{
    public virtual int Id { get; set; }
    [Required(ErrorMessage="Survey Name is required")]
    [Display(Name="Survey Name")]
    public virtual string SurveyName { get; set; }
    public virtual bool Disabled { get; set; }        
    public virtual IEnumerable<Question> Questions { get; set; }
}

public class Question
{
    public virtual int Id { get; set; }
    public virtual string QuestionText { get; set; }
    public virtual int QuestionOrder { get; set; }
    public virtual Enums.QuestionType QuestionType { get; set; }
    public virtual Survey Survey { get; set; }
    public virtual int Survey_Id { get; set; }

}

反过来创建了我的迁移:

// Creating table Survey
        SchemaBuilder.CreateTable("Survey", table => table
            .Column("Id", DbType.Int32, column => column.PrimaryKey().Identity())
            .Column("SurveyName", DbType.String)
            .Column("Disabled", DbType.Boolean)
        );

        // Creating table Question
        SchemaBuilder.CreateTable("Question", table => table
            .Column("Id", DbType.Int32, column => column.PrimaryKey().Identity())
            .Column("QuestionText", DbType.String)
            .Column("QuestionOrder", DbType.Int32)
            .Column("QuestionType", DbType.String)
            .Column("Survey_Id", DbType.Int32)
        );

我假设Orchard NHibernate的工作方式与EF相同,基于命名约定我的Survey和Survey_Id属性问题映射到数据库中的同一个字段(我的迁移会让我相信这是正确的)。

这是我的问题:使用Orchard的IRepository在数据库中创建一个对象会生成如下所示的SQL

 INSERT INTO Question (QuestionText, QuestionOrder, QuestionType, Survey_Id, Survey_id) VALUES (?, ?, ?, ?, ?)

哪些错误,因为Survey_Id有两次。

任何帮助或建议都会很棒。

1 个答案:

答案 0 :(得分:0)

对于初学者,您不是从ContentPart或ContentPartRecord继承的。 试试这个链接:Creating-1-n-and-n-n-relations,确实帮助我理解。 以及其他一些教程。