使用实体框架

时间:2015-05-26 13:47:49

标签: c# entity-framework

我有一个我无法解决的问题...... 使用实体框架,我有2个对象:

Opérateurs:

public partial class Opérateurs
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Opérateurs()
    {
        Domaines = new HashSet<Domaines>();
        Contacts = new HashSet<Contacts>();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int IdOpérateurs { get; set; }

    [StringLength(30)]
    public string Adresse { get; set; }

    [StringLength(10)]
    public string CodePostal { get; set; }

    [StringLength(25)]
    public string Ville { get; set; }

    [Required]
    [StringLength(30)]
    public string Société { get; set; }

    [StringLength(60)]
    public string Email { get; set; }

    [StringLength(20)]
    public string Fixe { get; set; }

    [StringLength(20)]
    public string Mobile { get; set; }

    public Boolean isActifDansCaveAVin { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Domaines> Domaines { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Contacts> Contacts { get; set; }
}

}

和Domaines:

public partial class Domaines
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Domaines()
    {
        Vins = new HashSet<Vins>();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int idDomaine { get; set; }

    [Required]
    [StringLength(200)]
    public string NomDomaine { get; set; }

    public int idOpérateur { get; set; }

    public virtual Opérateurs Opérateurs { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Vins> Vins { get; set; }
}

我可以添加Opérateur(太棒了!)但我无法添加Domaines: - (

这是我的单元测试:

[TestMethod]
    public void AjouterDomaine()
    {
        using (CaveAVinContext context = new CaveAVinContext())
        {
            Opérateurs operateur = context.Opérateurs.Find(500111);

            Domaines domaine = new Domaines();
            domaine.idDomaine = 5;
            domaine.Opérateurs = operateur;
            domaine.NomDomaine = "domaine Eric test";

            context.Domaines.Add(domaine);
            SaveChanges(context);
        }
    }

这样做,我得到一个DbUpdateException(没有任何指示:-() 注意:我也在评论中试过这一行(domaine.idDomaine = 5;)=&gt;相同的结果

怎么了?

1 个答案:

答案 0 :(得分:0)

我认为有两件事是错的:

您在自动生成的字段上设置了Id字段,并且您可以在域中添加两次,在行上:

domaine.Opérateurs = operateur;

context.Domaines.Add(domaine);

尝试:

删除:domaine.Opérateurs = operateur;

添加:domaine.OpérateursId = operateur.OpérateursId;

保持context.Domaines.Add(domaine);

如果可行,我将在此答案中添加更多解释。