使用我遷移基於數據集類型的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