mzandi Ответов: 3

Как я могу сначала создать временную таблицу с помощью кода entity framework


Я хочу запустить хранимую процедуру в sql server с помощью EF например
public IList<Charts> GetDataChart(int id)
        {
            var cmd = "[dbo].[getdatechart] @id";
            var sendId = new SqlParameter("@id", id);
            var result = DataContext.Database.SqlQuery<Charts>(cmd, sendId).ToList();

            return result;


        }

Во время выполнения возникает ошибка, так как диаграммы не являются таблицей и не определены dbcontext.it есть только один класс, который содержит proertis.

Что я уже пробовал:

how can i create temporary table by Entity framework code first

3 Ответов

Рейтинг:
2

sharkdevZ

Вот немного запоздалый ответ.

NuGet Gallery | EF6TempTableKit 1.0.0[^]

На GitHub есть код (source & unit tests) с подробным объяснением того, как интегрировать и запустить расширение EF6TempTableKit.


Рейтинг:
1

Dave Kreskowiak

Прочитай Entity Framework 6 - динамическое создание временных таблиц из IQueryable (Часть 1 из 2)[^]

Это не просто, и требует много дополнительной работы.

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


Рейтинг:
1

MadMyche

Поскольку я не использую Entity Framework, это может быть совершенно неверно - и этот ответ основан на моем опыте работы с ADO, который разделяет его основы с EF.

Проблема может заключаться в том, что контекст базы данных предполагает, что ваша команда имеет тип "text", который является типом по умолчанию, и ожидает, что команда будет оператором "SELECT". Если вы измените определение своей команды и определите ее как хранимую процедуру, вы можете добиться некоторого успеха. Вы можете иметь некоторый успех с чем-то сродни этому

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "[dbo].[getdatechart]";
cmd.CommandType = CommandType.StoredProcedure;