Почему я не могу выполнить функцию SQL с помощью .net Entity Framework? - PullRequest
2 голосов
/ 31 января 2012

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

using System.Data.Objects;

MyEntities entities = new MyEntities

var result0 = entities.CreateQuery<string>("SELECT XXX FROM Fn_Org_GetXXX('XXXX',2012);").first();

var result1 = entities.ExecuteFunction("fn_org_getXXX", new ObjectParameter[]
    {
        new ObjectParameter("location","XXXX"),
        new ObjectParameter("fiscalyear",2012)
    });

Обе строки кода выдают исключение, указывающее, что функция не существует. Однако, когда я запускаю вышеупомянутый код в SQL Server Management Studio, он работает нормально. Я подключаюсь к серверу SQL, используя те же учетные данные.

Ошибка для result0 говорит:

«Fn_Org_GetXXX» не может быть преобразован в допустимый тип или функцию.

Ошибка для результата1 говорит:

Не удалось найти FunctionImport 'fn_org_getXXX' в контейнер «MyEntities».

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Я не думаю, что пользовательские функции SQL сейчас поддерживаются в Entity Framework. Вот запись , которую вы можете определить в схеме edmx.

Есть некоторые обновления с Июнь 2011 CTP , но я не думаю, что он еще выпущен.

0 голосов
/ 31 января 2012

Для функций требуется имя схемы в соглашении о вызовах. Поэтому, если ваша функция создается в схеме dbo, вы бы назвали ее dbo.fn_org_getXXX

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