Я хочу знать, как/если можно использовать SQL Service Broker в EF4.x или EF5?Entity Framework с SQL Service Broker
Сценарий: Скажем, у меня есть список продуктов, я не хочу загружать это из db каждый раз, когда клиент посещает страницу. Конечно, я могу кэшировать страницу, но если менеджер товаров добавит новый продукт, он не появится сразу же, пока не истечет срок кеша или не изменится параметр запроса.
Решение: В SQL мы можем Enable_Broker и в веб-приложении начать соединение с SqlDependency. SQL отправит уведомления в наше веб-приложение. Поэтому у нас есть умная система «кэширования». Все это имеет смысл, если мы сможем использовать этот смарт-кеш. Нам не нужно посещать SQL db 1000 раз, когда на этой странице кликается 1000 клиентов. Но как только произойдет изменение в db, первый клиент, посетивший страницу в то время, увидит отражение. Мы получаем лучшее из обоих миров.
Редакция: Entity Framework не раскрывает эту способность. Или я не знаю об этом? Поскольку SQL 2005 и ASP.NET 2.0 уже получили эту возможность. EF 4/5 не может пропустить эту важную функцию, не так ли? Мне нужен эксперт, чтобы помочь мне в этом вопросе.
мне довелось найти хак по этой ссылке:
http://www.codeproject.com/Articles/233770/AutoRefresh-Entity-Framework-data-using-SQL-Server
Однако, он более или менее «недокументированные магии» путь, и у него есть какие-то неизвестные ограничения (ограничение связи с этой страницы имеет были удалены, поэтому я не знаю, что это такое). Таким образом, для меня это недостаточно надежно, и я не удивлюсь, если он внезапно не сработает после нового EF-патча. Есть ли более «официальный» способ сделать это? Благодаря!
Вы имели в виду страницы cache by time и param? Если это то, что вы имели в виду, я упомянул об этом в первом абзаце. Это своего рода вещь .net 1.0. Я хочу, чтобы уведомление об интеллектуальном обновлении из брокерского сервиса, как я могу, с обычным веб-приложением sql db + .net 2.0 ... – Tom
Я имею в виду, что вы можете аннулировать кеш страницы, когда ваша страница обновления будет использоваться. Как обычно работает кеширование. Вам не нужно ждать, чтобы аннулировать кеш после N секунд. – bwbrowning
Хм. Вероятно, менеджер по продукции накачивает данные в sqldb через ssis или что-то в этом роде. Он может не использовать веб-приложение для обновления цен на несколько тысяч продуктов. В этом случае веб-приложение не знает, что происходит в sql db. Кроме того, у нас может быть более одного приложения, обращающегося к db ... – Tom