Создать временную таблицу с Entity Framework

Я хочу создать временную таблицу на сервере sql с помощью Entity Framework. Есть ли способ сделать это? Если я могу создать временную таблицу, мой следующий вопрос: как я могу ее прочитать?

Заранее спасибо.

Андре


person Andre    schedule 21.06.2013    source источник
comment
Могут быть и другие способы, но вы можете делать то, что вам нужно, создавая хранимые процедуры и связывая их с вашей моделью.   -  person Andrew    schedule 21.06.2013
comment
Да, я знаю, что так, но мне это не очень нравится.   -  person Andre    schedule 21.06.2013
comment
Я справился с такой ситуацией, используя хранимую процедуру с переменной таблицы SQL Server. Построение представления также может быть вариантом в зависимости от ваших потребностей/ситуации. Но, по сути, временные таблицы и табличные переменные лучше всего работают в БД, а не пытаются загнать квадратный колышек в круглое отверстие.   -  person jfrankcarr    schedule 21.06.2013
comment
Почему вы пометили здесь CSLA? CSLA не является ORM.   -  person Joe    schedule 03.07.2013


Ответы (1)


Итак, вам не нравится маршрут хранимых процедур... и мне, если честно, но это самый быстрый способ, который я мог придумать.

Исходя из этого, я не знаю какого-либо простого способа создания временных таблиц в EDM, поэтому моим следующим предложением будет создание локальных объектов, которые имитируют временную таблицу, которую вы хотите создать. Имя временное, очевидно, указывает на то, что вы не хотите, чтобы они постоянно находились в базе данных, поэтому использование объектов в памяти имеет то преимущество, что оно гораздо более контролируемо и (в зависимости от вашей задержки) быстрее, чем выполнение нескольких вызовов базы данных.

public class MyTempTable
{
    public string ID { get; set; }
    public string Column1 { get; set; }
    // your other columns here
}

List<MyTempTable> tempTable = new List<MyTempTable>();

После того, как вы создали свой список объектов, вы можете делать практически все, что вы обычно делаете с таблицей базы данных, используя Linq.

person Andrew    schedule 21.06.2013
comment
Я хочу использовать временную таблицу, чтобы присоединиться к ней в некоторых других операторах sql, поэтому в объектах памяти нет выбора. - person Andre; 21.06.2013
comment
Вы можете сделать это с помощью небольшого взлома....stackoverflow.com/questions/9165288/ - person Andrew; 21.06.2013
comment
@Andrew - метод «Содержит» работает довольно хорошо, особенно для небольших объемов данных, таких как таблица поиска или диапазон с ограничением по дате. У меня есть некоторые опасения по поводу создания огромного предложения IN для больших объемов данных. - person jfrankcarr; 21.06.2013