エンティティのリストを表示するウィンドウがあり、新しいウィンドウ (グリッドではない) で gridview の選択項目を編集したい。フォームを送信してもエラーは発生しませんでしたが、エンティティはデータベースに変更がありません! 私を助けてください。
私のリストウィンドウのコードビハインドの一番上に:
private ObservableCollection<Employee> AllEmployeesData { get; set; }
private ListCollectionView View;
そしてwindow_loadedでは、データをフェッチするためにこのメソッドを使用します:
public void LoadAllEmployees()
{
IEnumerable<Employee> data = null;
using (ArchiveEntities db = new ArchiveEntities())
{
data = db.Employees.Include("Department");
this.AllEmployeesData = new ObservableCollection<Employee>(data);
}
CollectionViewSource employeeSource = (CollectionViewSource)this.FindResource("AllEmployeesDataSource");
employeeSource.Source = this.AllEmployeesData;
this.View = (ListCollectionView)employeeSource.View;
}
Editbutton クリック イベント:
EditEmployeeView win = new EditEmployeeView();
View.EditItem(SelectedEmployee);
win.DataContext = SelectedEmployee;
if ((bool)win.ShowDialog())
{
using (ArchiveEntities db = new ArchiveEntities())
{
Employee employee = db.Employees.Single(x => x.Id == SelectedEmployee.Id);
db.Employees.ApplyCurrentValues(employee);
db.SaveChanges();
View.CommitEdit();
}
}
else
{
View.CancelEdit();
}
上記のコードはすべて、最初のウィンドウ (エンティティのリストを表示するウィンドウ) にあります。そして私の2番目のウィンドウ(最初のウィンドウの選択されたアイテムを編集するためのウィンドウ)で:
submitbutton クリック イベント:
DialogResult = true;
Close();
私の問題は次のとおりです。編集フォームを送信してもエラーは発生しませんでしたが、データがデータベースに保存されず、編集フォームをキャンセルすると次のエラーが発生します。
InvalidOperationException は処理されませんでした: CancelEdit は現在の編集項目ではサポートされていません。