【问题标题】:How does EF Generate Proxy classesEF 如何生成代理类
【发布时间】:2016-04-14 02:30:23
【问题描述】:

我正在构建一个工作流引擎来包装我的服务层,并想探索 EF 生成透明代理类的方法,但我似乎无法从 GitHub/CodePlex 上的代码中弄清楚如何它确实有效。

有人能指出我正确的方向/解释这个过程吗?

它是在运行时还是编译时执行此操作?

...

主要区别:

EF 对属性感兴趣并跟踪它们的变化,我感兴趣的是使用一些逻辑将方法调用包装到任何类型的实例,这些逻辑会调用我的工作流引擎以“引发事件”。

【问题讨论】:

标签: c# entity-framework code-generation proxy-classes


【解决方案1】:

好吧,经过一番挖掘,它看起来像是在编译时使用 T4 模板导出类型,然后在运行时拦截以基本上用生成的代理类型替换原始对象的请求。

代码的关键部分...

T4 模板在这里:

http://entityframework.codeplex.com/SourceControl/latest#src/PowerTools/CodeTemplates/ReverseEngineerCodeFirst/Entity.tt

拦截代码在这里:

http://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/Infrastructure/Interception/PropertyInterceptionContext.cs

简而言之,应该可以在我自己的代码中使用 T4 模板重现类似的行为,然后让我的服务工厂使用命名约定查找代理类型。

非常干净,感谢 M$ :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多