Я использую EF6 с кэшированием второго уровня с помощью EF Provider Wrappers, но он не работает.EF Caching Provider Wrapper не работает с EF 6.0.2
Я получаю эту ошибку:
No Entity Framework provider found for the ADO.NET provider with invariant name 'EFCachingProvider'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
После просмотра по ссылке выше, я использовал регистрацию файла конфигурации после этого возникает следующая ошибка:
The 'Instance' member of the Entity Framework provider type 'EFCachingProvider.EFCachingProviderFactory, EFCachingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b' did not return an object that inherits from 'System.Data.Entity.Core.Common.DbProviderServices'. Entity Framework providers must inherit from this class and the 'Instance' member must return the singleton instance of the provider. This may be because the provider does not support Entity Framework 6 or later.
Спасибо, это сработало для меня. – Dhanraj
@Pawel Проект, в котором я сейчас работаю, начальные разработчики сначала выбрали модель сначала, а не код :(. Я пытаюсь получить кеширование второго уровня, работающее с EF6.1, используя DbContext, и я принимаю решение сначала не работает с моделью? Я взглянул на реализацию класса, реализующего IDbCommandInterceptor, но он оказался немного жестким, так как я хочу, чтобы определенные сущности кэшировались бесконечно, а другие нет. Возможно, вы знаете, как я «Мне удалось это сделать? – CraigM
Я не пробовал, но я думаю, что на самом деле это должно отлично работать и для ModelFirst. В EF6 модель сначала использует DbContext, и я думаю, что конфигурация будет применяться, потому что основное различие между подходами CodeFirst и non-CodeFirst что последний использует edmx, в то время как первый строит edmx (или более точную MSL и в представлениях памяти CSDL и SSDL) из кода. – Pawel