Bonjour,
je suis en train de développer une application qui utilise les Entities Model avec C# (framework 4.5).
J'ai adoré la facilité des mise à jour dans la base de données SQL.
Mais en essayant d'utiliser un DataGridView pour modifier et AJOUTER des enregistrements, les modifications s'effectuent mais pas les AJOUTs en appelant BD.SavaChanges().
Un BindingSource connecté à la table est ajouté et un DataGridView source est ce bindingsource.
Un bouton Valider est à cliquer quand on finit avec les modification dans DataGridView.
Si vous pouvez m'aider.

Voici le code de ma Form:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Entity.Infrastructure;

namespace PRODATA
{
public partial class Gammes : Form
{
PRODATAEntities BD;
public Gammes()
{
InitializeComponent();
}

private void Gammes_Load(object sender, EventArgs e)
{
BD = new PRODATAEntities();
BD.Configuration.ProxyCreationEnabled = false;
BD.Configuration.LazyLoadingEnabled = false;

gammeBindingSource.DataSource = BD.Gammes.ToList();
dataGridView1.DataSource = gammeBindingSource;
}

private void button1_Click(object sender, EventArgs e)
{

try
{
foreach (DbEntityEntry entry in BD.ChangeTracker.Entries())
{
switch (entry.State)
{
case EntityState.Added:
entry.CurrentValues["Utilisateur"] = ((PRODATAparent)(this.MdiParent)).mUtilisateur;
entry.CurrentValues["Dateheure"] = DateTime.Now;
break;
case EntityState.Modified:
entry.CurrentValues["Utilisateur"] = ((PRODATAparent)(this.MdiParent)).mUtilisateur;
entry.CurrentValues["Dateheure"] = DateTime.Now;
break;
case EntityState.Deleted:
break;
}
}
dataGridView1.EndEdit();
gammeBindingSource.EndEdit();
BD.SaveChanges();
MessageBox.Show("Enregistrement effectué...", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
gammeBindingSource.ResetBindings(false);
}
}
}
}