Это может быть простой ответ, но я не вижу, как выполнить хранимую процедуру с помощью EF CTP5.Entity Framework CTP5 - Как вызвать сохраненную процедуру?
В Entity Framework 4.0, мы сделали это:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))
.
Каков метод на ObjectContext
.
Но DbContext
не имеет такого метода.
Как мы называем хранимую процедуру? Не поддерживается ли это в EF CTP5?
EDIT:
Я нашел this thread, в котором говорится, что вам нужно сделать это:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
Это вызывает некоторые опасения:
1) Вы теперь называют хранимая prodedure на , а не контекст. Хранимые процедуры должны быть доступны в контексте, не привязанные к определенному набору объектов. Точно так же, как они находятся под «Базой» в SQL Server, а не под «Таблицей».
2) Как насчет сложных типов? Ранее я возвращал сложный тип из хранимой процедуры. Но теперь, похоже, вам нужно сопоставлять данные напрямую с сущностью? Это не имеет никакого смысла. У меня есть много хранимых процедур, которые возвращают тип, не представленный непосредственно ObjectSet/DBSet, который я не вижу, как я могу потянуть.
Надеюсь, что кто-то может очистить это для меня, потому что из того, что я понимаю до сих пор, я не смогу перейти на CTP5.
Какой именно то, что я положил в моем редактировать мой вопрос. – RPM1984
Это отвечает на вашу первую заботу. SP доступны в масштабе контекста. DbContext.Database - это ссылка на встроенный объект DbDatabase. Это отличается от context.People.SqlQuery, который работает на DbSet. –
Ах, ваше право, даст вам возможность вернуться и вернуться к вам. – RPM1984