EntityRef и скомпилированные планы LINQ - PullRequest
6 голосов
/ 21 марта 2011

Есть ли способ заставить LINQ-2-SQL компилировать и кэшировать планы для EntityRef .

Из внутреннего профилирования мы видим значительное количество ЦП, используемое для продолжения перекомпиляциипланы.

System.Reflection.Emit.DynamicMethod.CreateDelegate
System.Data.Linq.SqlClient.ObjectReaderCompiler.Compile
System.Data.Linq.SqlClient.SqlProvider.GetReaderFactory
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Compile
System.Data.Linq.CommonDataServices+DeferredSourceFactory`1.ExecuteKeyQuery
System.Data.Linq.CommonDataServices+DeferredSourceFactory`1.Execute
System.Linq.Enumerable.SingleOrDefault
System.Data.Linq.EntityRef`1.get_Entity

Я бы предпочел использовать сущность ref, но я думаю, что если у нас нет выбора, мы можем написать это.

1 Ответ

4 голосов
/ 22 марта 2011

Нет, невозможно заставить LINQ 2 SQL компилировать и кэшировать запросы для EntityRef или EntitySet.

В реализации нет хуков для него.

Если вам нужно использовать CompiledQuery , вам придется написать свою собственную обертку и помощников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...