Mor*_*ker 5 c# data-binding events entity-framework
我希望在特定表中的数据更改时得到通知,由实体模型表示.模型是否了解基础数据的变化?如果它确实触发了一个事件,我该如何订阅它?
你的问题其实很不清楚.
我希望在特定表中的数据更改时得到通知,由实体模型表示.
这是什么意思?
您是否希望收到有关您的应用程序未完成的数据库更改的通知?然后答案是:没有EF不提供任何此类通知系统.你必须建立自己的.
您是否希望收到有关您对实体所做更改的通知?答案是INotifyPropertyChanged接口和ObservableCollectio n用于导航属性.在实体中使用这些构造,以便在实体更改时触发事件.
您想知道将在数据库中执行哪些更改吗?覆盖SaveChanges或处理SavingChanges并用于ObjectStateManager获取已更改实体的列表.以下是如何获取给定类型的已添加实体列表的一些示例.
该NuGet包EntityFramework.Triggers很好地包装了预订至实体插入,更新和删除的功能。
只需使用 DbContextWithTriggers 包装您的上下文;
public class MyContext : DbContextWithTriggers {
public DbSet<Person> People { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后订阅触发事件
var mycontext = new MyContext() { TriggersEnabled = true };
Triggers<Person>.Inserting += entry =>
{
Console.WriteLine($"Person: {entry.Entity}");
};
Run Code Online (Sandbox Code Playgroud)