Временные таблицы Entity Framework и SQL Server
===============================================

 У нас есть устаревшее приложение, которое мы переходим на C #, и я бы хотел использовать Entity Framework (EF) для доступа к данным. SQL Server 2012 - это база данных, и в настоящее время я использую EF 5.0. Исходное приложение выполнило большую обработку данных. В рамках этой обработки оригинальное приложение **широко** использовало таблицы «temp». Большинство из этих таблиц были фактически не временными таблицами SQL Server (например, #sometable in tempdb), но реальные таблицы были созданы и уничтожены в их собственной базе данных в SQL Server. 

 Теперь, когда я работаю с C # EF, я хочу иметь возможность использовать временные таблицы (любого типа) как часть моей обработки данных. Я сделал некоторые поисковые запросы по использованию временных таблиц с EF - и до сих пор я обнаружил, что вы можете создавать tempdb temp-таблицы с помощью SQLBulkCopy, но нет способа запросить их с помощью EF Linq, так как они не являются частью нормальная структура данных. Другой вариант, о котором я прочитал, - это использование хранимой процедуры для обработки и передачи ее параметра, зависящего от таблицы. Это заставило бы нас иметь тысячи хранимых процедур - и положило бы большую часть бизнес-логики в sprocs. 

 Есть ли другой способ создания и использования временных таблиц SQL Server? Имеет ли EF 6 дополнительные возможности в этой области? 

 Я никогда не видел временные таблицы, используемые в EF. 

 Если рассматриваемый процесс данных настолько интенсивный, вероятно, лучше оставить его в качестве хранимой процедуры (я предполагаю, что так работает старый код). EF может запускать хранимые процедуры без проблем; вы можете даже вернуть результаты в качестве модели. 

 Если вы действительно не хотите использовать хранимую процедуру, вы также можете моделировать временную таблицу в EF с помощью обычной таблицы и просто фильтровать ее на текущий сеанс (с использованием GUID или другого другого синтетического ключа ). Этот метод работает достаточно хорошо, но имеет недостаток в необходимости очистки данных мусора из таблицы при выполнении вашей процедуры.