如何在实体框架代码中首先添加一个对象来侦听对象

时间:2016-03-09 09:46:55

标签: c# asp.net-mvc entity-framework

我首先使用实体​​框架代码我有两个对象项目调查问卷。项目对象有一个问卷调查OneToMany关联
这是我的代码:

Projet课程

public class Projet
{
    [Key]
    public int codeProjet { get; set; }

    [Required(ErrorMessage="Veuillez entrer la designation du projet")]
    [MaxLength(250)]
    [Display(Name = "Designation")]
    public String designation{ get; set; }

    [Display(Name="Date début")]
    public DateTime dateDebut { get; set; }

    [Display(Name="Date fin ")]
    public DateTime dateFin { get; set; }

    [Column("desciption", TypeName = "ntext")]
    [Display(Name="Desciption du projet ")]
    public String desciption { get; set; }

    [MaxLength(100)]
    [Display(Name="Responsable du projet")]
    public String responsable { get; set; }

    [Display(Name = "Budget du projet")]
    public double budget { get; set; }

    public virtual ICollection<Questionnaire> questionnaires { get; set; }
}

调查问卷类

public class Questionnaire
{
    [Key]
    public int codeQuestionnaire { get; set; }

    [MaxLength(250)]
    [Display(Name="Desciption du questionnaire")]
    public String designation { get; set; }

    [Display(Name = "Questionnaire avec GPS ?")]
    public bool avecGPS { get; set; }
    public bool avecNote { get; set; }

    //foreign key Projet entity 
    //[Required]
    public int projetId { get; set; }
    [ForeignKey("projetId")]
    public virtual Projet projet { get; set; }           
}

上下文类:

public class QuestContext :DbContext
{
    public QuestContext() : base("name=QuestionnaireDbContext") { }

    public DbSet<Projet> projets { get; set; }
    public DbSet<Questionnaire> questionnaires { get; set; }     
}

在我的DAO图层中,我想添加此方法

public void addQuestionnaireToProjet(int codeProjet, Questionnaire questionnaire) { }

我的问题是如何将问卷调查对象添加到存在的Projet对象中?感谢

1 个答案:

答案 0 :(得分:2)

您只需将问卷添加到项目的调查问卷集中即可。如果正确定义了项目和问卷之间的关系,这将自动生成正确的外键。

var existingProject = QuestContext.projets.Find(projetId);
var newQuestionnaire = new Questionnaire();
existingProject.questionnaires.Add(newQuestionnaire);
QuestContext.SaveChanges();