var result = db.Sports.AsEnumerable().ToList(); dataGrid.ItemsSource = result; data into the DataGrid var result = db.Sports.AsEnumerable().ToList(); dataGrid.ItemsSource = result; var result = db.Sports.AsEnumerable().ToList(); dataGrid.ItemsSource = result;

Data is displayed. After editing, save back to the entity framework.
db.SaveChanges (); Saves only changed data, not newly added or deleted.

  public class Sports : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string _sport; public string sport { get { return _sport; } set { _sport = value; OnPropertyChanged("sport"); } } [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public int sports_code { get; set; } protected void OnPropertyChanged(string name) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } } } 
  • Your data is not added to the EF context, and therefore does not save. - sp7
  • how to add? db.Sports.Add (new Sports ()); swears that there is such an object - Dmitry Valerievich

1 answer 1

Sports objToAdd; // get the object that was changed

  private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { objToAdd = dataGrid.SelectedItem as Sports; //Проверим если такой же в сущности: var conn = db.Sports.Where(c => c.sports_code == objToAdd.sports_code).FirstOrDefault(); if (conn == null) { db.Sports.Add(objToAdd); } else { conn.sports_code = objToAdd.sports_code; conn.sport = objToAdd.sport; db.Entry(conn).State = System.Data.Entity.EntityState.Modified; } db.SaveChanges(); } 

I found a hint here