Мне нужно изменить схему таблицы без перезагрузки домена приложения (проблема с кэшированием модели EF)

#ef-code-first

#ef-code-first

Вопрос:

У меня есть пользовательская реализация системы multi tenant code first, в основном разделяющей схемы SQL для клиентов. Я использую метод ToTable для корректного отображения схемы при первом вызове, но, поскольку я прочитал о кэшируемой модели, изменение схемы при втором вызове для другого клиента не работает. Есть ли в EF 4.1 какие-либо способы отключить кэширование или каждый раз перестраивать модель.. Да, я знаю, что это не очень хорошо сказывается на производительности. Спасибо за любую помощь..

Ответ №1:

Хотя это старый вопрос, но для всех тех, кто сталкивается с этой проблемой и в конечном итоге находит этот вопрос в качестве возможного решения. Вот и все…

Изначально кэширование можно было отключить, установив для свойства «CacheForContextType» ModelBuilder значение «false» в методе OnModelCreating. Этот метод определен в DbContext как виртуальный и должен быть переопределен. Но в EF 4.1 это свойство было удалено, поскольку создание модели — дорогостоящий процесс, и команда Microsoft хотела продвинуть лучший шаблон. Проверьте эту ссылку

Ответ №2:

Похоже, что команда Build () в ModelBuilder — это то, что вы ищете.

 modelBuilder.Build().Compile().CreateObjectContext...