Из моего комментария: «SP доступны в широком контексте». Это должно быть «для всей базы данных», так как вы можете запрашивать данные, которые не связаны с контекстом.

ожет быть простой ответ, но я не вижу, как выполнить хранимую процедуру с EF CTP5.

В Entity Framework 4.0 мы сделали это:

ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id)).

Какой метод наObjectContext.

НоDbContext не имеет такого метода.

Как мы называем хранимый процесс? Разве это не поддерживается в EF CTP5?

РЕДАКТИРОВАТЬ:

я нашелэта тема, в котором говорится, что вам нужно сделать это:

  var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");

Это вызывает некоторые опасения:

1) Вы сейчас вызываете сохраненную процедуру наустановлен, неконтекст, Хранимые процедуры должны быть доступны для всего контекста, не привязаны к конкретному набору сущностей. Точно так же, как они находятся в разделе «База данных» в SQL Server, а не в разделе «Таблица».

2) Как насчетсложные типы? Ранее у меня был сложный тип, возвращаемый из хранимой процедуры. Но теперь, похоже, вам нужно сопоставить непосредственно с сущностью? Это не имеет никакого смысла. У меня есть много хранимых процедур, которые возвращают тип, не представленный непосредственно ObjectSet / DBSet, который я не могу понять, как я могу остановиться.

Надеюсь, что кто-то может прояснить это для меня, потому что, насколько я понимаю, я не смогу перейти на CTP5.

Ответы на вопрос(1)

Решение Вопроса

как это

using(var context = new MyContext())
{
    // custum sql statement
    var c = context.Database.SqlQuery<int>("SELECT COUNT(*) FROM Employees");

    // returned entity type doesn't have to be represented by ObjectSet/DBSet
    var e = context.Database.SqlQuery<Employee>("SELECT * FROM Employees");

    // stored procedure
    var q = context.Database.SqlQuery<Employee>("GetEmployees");
}
 Steven K.27 янв. 2011 г., 08:04
Из моего комментария: «SP доступны в широком контексте». Это должно быть «для всей базы данных», так как вы можете запрашивать данные, которые не связаны с контекстом.
 RPM198425 янв. 2011 г., 23:54
Это именно то, что я положил в мою правку на мой вопрос.
 RPM198427 янв. 2011 г., 05:48
Работает отлично. Спасибо!
 RPM198426 янв. 2011 г., 23:46
Ах, ты прав, попробуешь и вернусь к тебе.
 Steven K.26 янв. 2011 г., 11:19
Это отвечает вашей первой заботе. SP доступны для всего контекста. DbContext.Database является ссылкой на встроенный объект DbDatabase. Это отличается от context.People.SqlQuery, который работает на DbSet.

Ваш ответ на вопрос