Доступ к DbContext из IQueryable - PullRequest
       29

Доступ к DbContext из IQueryable

6 голосов
/ 05 сентября 2011

Я пытаюсь реализовать шаблон кэширования, который, возможно, должен использовать Redis.Проблема с этим шаблоном заключается в том, что мне нужно отключить Configuration.ProxyCreationEnabled, а затем снова включить его, чтобы избежать проблем во всей веб-ферме.

Я хотел бы получить доступ к DbContext из IQueryable, поэтомуЯ могу сделать это один раз, а не везде.Самый простой способ сделать это - передать используемый DbContext в мое расширение для кэширования, однако я наткнулся на этот пост:

Доступ к DataContext за IQueryable

Есть лиспособ доступа к DbContext аналогично ссылке выше с использованием EF 4.1 Code Fist (DbSet и т. д.)?

Я пытался найти это сам, но изо всех сил пытался найти базовый класс из DbSet, на который есть ссылка, в IQueryable, используя отражение.

1 Ответ

7 голосов
/ 05 сентября 2011

Решение, упомянутое в Доступ к DataContext за IQueryable , является взломом и не должно использоваться.Он опирается на имя закрытой переменной-члена в классе, реализующем IQueryable.Это означает, что реализующий класс может измениться в будущем выпуске EF / .NET Framework и сломать ваш код.Поскольку DbContext недоступен через интерфейс IQueryable, вы должны передать его в свое расширение для кэширования, чтобы не делать предположений о реализации IQueryable.Это также позволит более четко установить зависимость от DbContext в вашем интерфейсе кэширования, а не скрывать его в реализации.

...