2011-04-26 64 views
2

我希望在實體模型表示的數據在特定表內發生變化時得到通知。模型是否意識到潛在的數據更改?如果確實發生了事件,我該如何訂閱它?實體模型在數據更改時觸發事件嗎?

+1

據我知道..沒有,但到EDMX所做的任何更改是由自己的代碼來完成。所以你可以實現這樣的事件。 – 2011-04-26 14:29:48

回答

6

你的問題其實是非常不清楚。

我希望在實體模型表示的數據在特定表內發生變化時得到通知。

這是什麼意思?

是否要通知您的應用程序沒有完成數據庫更改?那麼答案是:沒有EF不提供任何此類通知系統。你必須建立自己的。

是否希望收到關於您對實體所做更改的通知?答案是INotifyPropertyChanged界面和ObservableCollectio n導航屬性。在實體中使用這些結構可以在實體更改時觸發事件。

您是否想知道數據庫中將執行哪些更改?覆蓋SaveChanges或處理SavingChanges並使用ObjectStateManager獲取已更改實體的列表。 Here是一些例子,如何獲得給定類型的添加實體列表。

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}"); 
}; 
相關問題