2015-05-26 4 views
1

У меня есть проблема, которую я не могу решить ... с помощью Entity Framework, у меня есть 2 объекта:Добавить связанный объект с Entity Framework

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; } 
} 

}

и Домены:

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 (без указания :-() NB: Я также попытался с этой линией в комментарии (Domaine .idDomaine = 5;) => тот же результат

Что случилось?

+0

вы можете отлаживать и убедиться, что операция не равна нулю? вы уверены, что есть подходящая запись для 500111? – renakre

+0

Можете ли вы поделиться точным сообщением об исключении? – Kamo

+0

@erkaner: да, есть запись для 500111, я уверен, и использование отладчика operationur не является нулевым – Cooxkie

ответ

0

Я думаю, что есть две ошибки:

Вы настраиваете поле Id на поле автоматически генерируемой, и вы, возможно, добавили в домене дважды, на линиях:

domaine.Opérateurs = operateur; 

и

context.Domaines.Add(domaine); 

Try:

Снимите: domaine.Opérateurs = operateur;

Добавить: domaine.OpérateursId = operateur.OpérateursId;

Держите context.Domaines.Add(domaine);

Если это работает, я добавлю больше объяснений в этом ответе.

+0

Ошибка исчезнет :-), но ничего не отображается в моей базе данных ... :-( – Cooxkie

Смежные вопросы