我希望在實體模型表示的數據在特定表內發生變化時得到通知。模型是否意識到潛在的數據更改?如果確實發生了事件,我該如何訂閱它?實體模型在數據更改時觸發事件嗎?
2
A
回答
6
你的問題其實是非常不清楚。
我希望在實體模型表示的數據在特定表內發生變化時得到通知。
這是什麼意思?
是否要通知您的應用程序沒有完成數據庫更改?那麼答案是:沒有EF不提供任何此類通知系統。你必須建立自己的。
是否希望收到關於您對實體所做更改的通知?答案是INotifyPropertyChanged界面和ObservableCollectio n導航屬性。在實體中使用這些結構可以在實體更改時觸發事件。
您是否想知道數據庫中將執行哪些更改?覆蓋SaveChanges
或處理SavingChanges
並使用ObjectStateManager
獲取已更改實體的列表。 Here是一些例子,如何獲得給定類型的添加實體列表。
1
沒有,也沒有對Change
引發的事件,只有當你做你SaveChanges
能趕上你需要什麼...
爲,儘量尋找this question/answers
1
如果你的目的是保存數據只是萬一有那麼變化參考以下鏈接:
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.savingchanges.aspx
1
NuGet package EntityFramework.Triggers很好地包裝了爲插入,更新和刪除訂閱實體的功能。
只是用DbContextWithTriggers包裝你的上下文;
public class MyContext : DbContextWithTriggers {
public DbSet<Person> People { get; set; }
}
然後訂閱觸發事件
var mycontext = new MyContext() { TriggersEnabled = true };
Triggers<Person>.Inserting += entry =>
{
Console.WriteLine($"Person: {entry.Entity}");
};
相關問題
- 1. 更新數組時,模型的更改事件不會觸發?
- 2. 模型更改時觸發更改事件
- 3. 動態CRM事件觸發對實體條目的更改嗎?
- 4. 引導程序在模型更改時觸發兩次事件 - 「更改」和「更改:模型屬性名稱」
- 5. 在運行時更改實體模型數據庫
- 6. 骨幹 - 在特定屬性發生更改時觸發事件的模型
- 7. 在骨幹js中更新模型時,更改事件不會觸發
- 8. 骨幹模型更改事件沒有在設置模型後觸發
- 9. 如何在切換觸發器更改時觸發事件?
- 10. Angular如何在模型值更改後觸發複選框的更改事件?
- 11. URL更改時是否觸發事件
- 12. 更改事件未觸發
- 13. 觸發更改事件
- 14. 如何在模型更新時觸發事件
- 15. 實體框架:修改模型時如何更新數據庫
- 16. 觸發事件在窗體上發生事件時觸發窗體
- 17. SAPUI5:如何在模型內部的值更改時觸發事件?
- 18. 骨幹模型設置值不會觸發更改事件
- 19. 當窗體加載時觸發wpf組合更改事件
- 20. dojo TabContainer有更改標籤時觸發的事件嗎?
- 21. 獲取文本更改統一時觸發的事件嗎?
- 22. 在數據庫表上更改/更新/刪除時觸發的jQuery事件
- 23. jQuery UI自動完成更改事件不實時觸發
- 24. 骨幹模型獲取返回空白JSON,模型不觸發更改事件?
- 25. Backbone.js - 更改模型陣列上的事件不會觸發元素更改
- 26. 更改數據庫字段並更新ADO實體模型(.edmx)?
- 27. 在更改後未觸發SelectedIndexChanged事件
- 28. 任何實時模型變更事件
- 29. JPA實體生命週期事件vs數據庫觸發器
- 30. 如何在模型屬性發生變化時觸發事件
據我知道..沒有,但到EDMX所做的任何更改是由自己的代碼來完成。所以你可以實現這樣的事件。 – 2011-04-26 14:29:48