2011-04-26 65 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}"); 
}; 
相关问题