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所做的任何更改都是由您自己的代码完成的。所以你可以实现这样一个事件。