У меня есть пользовательская функция в базе данных SQL Server 2005, которая возвращает немного.Я хотел бы вызвать эту функцию через Entity Framework.Я искал вокруг и мне не повезло.
В LINQ to SQL это было неприлично просто, я просто добавил бы функцию в модель контекста данных, и я мог бы назвать ее так.
bool result = FooContext.UserDefinedFunction(someParameter);
Используя Entity Framework, я добавил эту функцию в свою модель, и она отображается в папке SomeModel.Store \ Stored Programs в браузере моделей.
Модель не сгенерировала код для функцииXML-файл для файла .edmx содержит:
<Function Name="UserDefinedFunction" ReturnType="bit" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="someParameter" Type="int" Mode="In" />
</Function>
Самое близкое, что я мог получить, было примерно так:
bool result = ObjectContext.ExecuteFunction<bool>(
"UserDefinedFunction",
new ObjectParameter("someParameter", someParameter)
).First();
Но я получил следующее сообщение об ошибке:
Не удалось найти FunctionImport 'UserDefinedFunction' в контейнере 'FooEntities'.
Имена были изменены для защиты невинных.
tldr:Как вызвать пользовательские функции со скалярными значениями, используя Entity Framework 4.0?