使用我迁移基于数据集类型的WPF应用程序使用实体框架5码时首先上下文的持续时间(.NET 4.5)。EF代码优先 - 在填充模型
我目前加载了从DataSet数据模型。模型字段然后绑定到XAML DataGrid。从INotifyPropertyChanged的衍生型号和域对象使用ObservableCollections的组合,我能得到哪些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操作将其写入到数据库之前。
是它的EF的DbContext可接受的方式来使用它类似于我如何使用时,用于填充模型中的数据集?如果您希望能够保存对象更新,则似乎上下文必须留在模型的整个生命周期中。
感谢您的任何指导! 科里。
如果你正在使用你的系统域对象,你应该能够做到以下几点当保存按钮用户点击:火了的DbContext(在using语句),使用LINQ抢EF对象,执行更新通过读取Domain对象到EF对象,调用DbContext上的SaveChanges。 – failedprogramming 2013-03-10 22:48:06
这可能是你http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx一个有用的链接 – failedprogramming 2013-03-10 22:50:06
谢谢!如果域对象是派生类,那么我是否必须为每个基类编写一个复制操作符来将更新迁移到EF保持的对象? – cardinalPilot 2013-03-10 22:53:44