Вызов хранимой процедуры из LINQ (с dbcontext) - PullRequest
3 голосов
/ 20 апреля 2011

Привет всем С помощью EF4 я могу сопоставить функцию EDMX (с «обновлением модели из базы данных» и добавить хранимую процедуру из списка) к методу linq, используя небольшой фрагмент, подобный этому

[EdmFunction("MYPROJECT.Store", "Foo")]
public Decimal Foo(Int32 Id)
{
    throw new NotSupportedException("Not direct access possible, use with E-SQL or LINQ");
}

Но, похоже, это не работает с EF 4.1

Я вижу, что хранимые процедуры не работают с Code First.Я использую DbContext, это нормально, что я не могу этого сделать?

Если да, как я могу заставить мои хранимые процедуры работать?

Спасибо заранее: -)

1 Ответ

1 голос
/ 20 апреля 2011

Это только функция, связанная с EDMX, и вы не можете использовать ее с кодом API DbContext сначала / свободно API без EDMX.Btw.Вы имеете в виду функцию SQL, а не хранимую процедуру, потому что импортированная хранимая процедура приводит к импорту функции и не может быть вызвана в запросе Linq.Методы, отмеченные EdmFunction состояниями либо для импортированных функций SQL, либо для функций, определенных моделью.

Да, я знаю, функции SQL отображаются в ветви хранимых процедур в мастере импорта, но это всего лишь «особенность» конструктора EDMX.

Поскольку вы используете базу данных в первую очередь с DbContext API и файлом EDMX, вы сможете без проблем использовать EdmFunction.Я только что проверил это.Возможно, проблема в том, что ваш прокси-метод, помеченный атрибутом EdmFunction, не является статическим - он должен быть статическим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...