2017-03-06 20 views
1

我想跟蹤wpf.But中實體框架工作的變化,但我無法找到Defintion ChangeTracker並在這裏顯示error.Below是我寫的代碼取消在WPF MVVM enity數據輸入表單按鈕: 我的命令委託取消:無法在實體框架中找到ChangeTracker

_commands.AddCommand("Cancel", x => Cancel(), x => CanSave()); 

和我CancelSave方法:

 bool CanSave() 
     { return ctx2.ChangeTracker.HasChanges(); 
     } 

卜ChangeTracker顯示errro說實體不包含定義改變tracker.I使用視覺st udio 2010

這是實體的實例: TESTSEntities ctx2 = new TESTSEntities();

我能保存到數據庫throuhg的變化:

 public void Save() 
     { 

      ctx2.SaveChanges(); 

      } 

從exisisting數據庫表是在創建系統生成的實體類:

public partial class TESTSEntities :   global::System.Data.Objects.ObjectContext 
     { 
     /// <summary> 
+0

是你確定ctx2是DbContext實例,而不是其他的? –

+0

是的,它是我的上下文實例:class Listviewbindwithtextbox_VM:INotifyPropertyChanged { TESTSEntities ctx2 = new TESTSEntities(); –

+0

什麼是TESTSEntities的基類? –

回答

0

OjectContext沒有ChangeTracker財產, DbContext有它。

要想從對象上下文的更改列表,使用ObjectStateManager的ObjectContext的實例,即

ctx2.ObjectStateManager.GetObjectStateEntries(EntityState.Added /刪除/修改)

https://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.getobjectstateentries(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.data.entitystate(v=vs.110).aspx

+0

我無法在我的實體中找到DbContext –

+0

這就是爲什麼我要求您使用您的ObjectContext,它是由您給出的代碼中的ctx2 –