C# 实体模型在其数据更改时是否触发事件?

C# 实体模型在其数据更改时是否触发事件?,c#,entity-framework,events,data-binding,C#,Entity Framework,Events,Data Binding,我希望在实体模型表示的特定表中发生数据更改时收到通知。模型是否知道基础数据的更改?如果它确实触发了一个事件,我如何才能订阅它?不,在Change上没有触发事件,只有当您执行SaveChanges时,您才能捕获所需的内容 为此,请尝试查看如果您的目的是仅在发生更改时保存数据,请参阅以下链接: 你的问题实际上很不清楚 我希望在实体模型表示的特定表中发生数据更改时收到通知 这是什么意思 是否希望收到应用程序未完成的数据库更改的通知?那么答案是:没有EF不提供任何这样的通知系统。你必须建立你自己的 是否

我希望在实体模型表示的特定表中发生数据更改时收到通知。模型是否知道基础数据的更改?如果它确实触发了一个事件,我如何才能订阅它?

不,在
Change
上没有触发事件,只有当您执行
SaveChanges
时,您才能捕获所需的内容


为此,请尝试查看

如果您的目的是仅在发生更改时保存数据,请参阅以下链接:


你的问题实际上很不清楚

我希望在实体模型表示的特定表中发生数据更改时收到通知

这是什么意思

是否希望收到应用程序未完成的数据库更改的通知?那么答案是:没有EF不提供任何这样的通知系统。你必须建立你自己的

是否希望收到有关您对实体所做更改的通知?答案是interface和导航属性的n。在实体中使用这些构造可以在实体更改时触发事件

您想知道将在数据库中执行哪些更改吗?覆盖
SaveChanges
或处理
SavingChanges
并使用
ObjectStateManager
获取已更改实体的列表。是如何获取给定类型的已添加实体列表的示例。

订阅实体以进行插入、更新和删除的功能很好地总结

只需使用DbContextWithTriggers包装您的上下文

public class MyContext : DbContextWithTriggers {
    public DbSet<Person> People { get; set; }
}
公共类MyContext:DbContextWithTriggers{
公共数据库集人物{get;set;}
}
然后订阅触发事件

var mycontext  = new MyContext() { TriggersEnabled = true };
Triggers<Person>.Inserting += entry =>
{
    Console.WriteLine($"Person: {entry.Entity}");
};
var mycontext=new mycontext(){TriggersEnabled=true};
触发器。插入+=条目=>
{
WriteLine($“Person:{entry.Entity}”);
};

据我所知。。没有,但是对edmx所做的任何更改都是由您自己的代码完成的。所以你可以实现这样一个事件。