C# 拦截实体框架中的DataContext对象创建以连接事件
我需要用我的实体框架类连接一些事件,为此我需要从DBContext“截取”这些类的检索 我曾尝试在存储库级别执行此操作,当有人从数据库集获取对象时,在传递实体之前,我会遍历并添加一个事件侦听器 然而,延迟加载在这里的工作中带来了麻烦C# 拦截实体框架中的DataContext对象创建以连接事件,c#,entity-framework,C#,Entity Framework,我需要用我的实体框架类连接一些事件,为此我需要从DBContext“截取”这些类的检索 我曾尝试在存储库级别执行此操作,当有人从数据库集获取对象时,在传递实体之前,我会遍历并添加一个事件侦听器 然而,延迟加载在这里的工作中带来了麻烦 我找到了一种使用IDbCommandInterceptor拦截查询的方法,有没有办法拦截实体框架对象创建本身,甚至只是延迟加载,这样我就可以注入依赖项,或者注册事件?在DbContext中,您可以注册到ObjectContext.ObjectMaterialized
我找到了一种使用IDbCommandInterceptor拦截查询的方法,有没有办法拦截实体框架对象创建本身,甚至只是延迟加载,这样我就可以注入依赖项,或者注册事件?在
DbContext
中,您可以注册到ObjectContext.ObjectMaterialized
事件。您可以在构造函数中进行订阅以使其变得简单
((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized += onObjectMaterialized;
签名相对简单
void onObjectMaterialized(object sender, ObjectMaterializedEventArgs e) {
// your code here
}
现在,代码知道EF DbContext何时创建对象。如果您在DbContext中再深入一点,就会找到ObjectContext,其中有一个事件(
ObjectMaterialized
)
啊,我可能发现了“ObjectMaterialized”事件。我花了一段时间在谷歌上搜索拦截器和ObjectProxy,然后就在大家回答的时候偶然发现了这一点!谢谢正是我需要的。