Entity Framework 5 Code First (.Net 4.5) を使用するように、型指定されたデータセット ベースの WPF アプリを移行しています。
現在、DataSet からのデータを使用してモデルをロードしています。次に、モデル フィールドが XAML DataGrid にバインドされます。モデル内の ObservableCollections と INotifyPropertyChanged から派生したドメイン オブジェクトの組み合わせを使用して、コレクション レベルとドメイン オブジェクト レベルで実行されている CRUD 操作を取得し、それに応じて動作させることができます。
public class DomainObject : INotifyPropertyChanged
{
public DataRowState State;
...
}
public class Model
{
private ObservableCollection<DomainObject> _family = new ObservableCollection<DomainObject>();
public Model()
{
List<DomainObject> objs = DS.GetObjects();
foreach ( var obj on objs )
{
obj.PropertyChanged += OnObjectChanged;
_family.Add(obj);
}
_family.CollectionChanged += OnCollectionChanged;
}
void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// do stuff against DataSet based on e.Action
...
}
private void OnObjectChanged(object sender, PropertyChangedEventArgs e)
{
// do stuff against DataSet based on sender's (DomainObject) State property.
...
}
}
私の現在の実装では、ユーザーがSave
ボタンを押したときにデータベースに書き込む前に、データセット内の CRUD 操作を疑似バッチアップすることができます。または、キャンセルが押された場合は DataSet が破棄されます。
モデルを作成するために DataSet を使用した場合と同様に、EF DbContext がそれを使用することは許容されるパターンですか? オブジェクトの更新を保存できると期待する場合、コンテキストはモデルの存続期間中存続する必要があるようです。
ご指導ありがとうございます。コーリー。