Как EF генерирует прокси-классы

Я играю над созданием механизма рабочего процесса, чтобы обернуть мой сервисный уровень, и хотел бы изучить подход, который использует EF для генерации прозрачных прокси-классов, но я не могу понять из кода на GitHub / CodePlex, как он на самом деле работает,

Может ли кто-нибудь указать мне правильное направление / объяснить процесс?

Это делает это во время выполнения или во время компиляции?

...

Ключевое отличие:

EF интересуется свойствами и отслеживает их изменения, меня интересует обертывание вызовов методов к экземпляру любого типа с некоторой логикой, которая будет вызывать мой механизм рабочего процесса для "вызова события".

1 ответ

Решение

Итак, после некоторых размышлений похоже, что он использует шаблоны T4 для экспорта типов во время компиляции, а затем перехватывает, чтобы в основном заменить запрос исходного объекта сгенерированным типом прокси во время выполнения.

Ключевые части кода...

Шаблоны T4 здесь:

http://entityframework.codeplex.com/SourceControl/latest

Код перехвата находится здесь:

http://entityframework.codeplex.com/SourceControl/latest

Короче говоря, должно быть возможно воспроизвести подобное поведение с использованием шаблонов T4 в моем собственном коде, а затем заставить мою фабрику сервисов искать тип прокси с использованием соглашения об именах.

Довольно чистый, слава M$ на этом:)

Другие вопросы по тегам