У меня есть пользовательская функция в базе данных SQL Server 2005, которая возвращает бит. Я хотел бы назвать эту функцию через Entity Framework. Я искал вокруг и не имел большой удачи.
В LINQ to SQL это было неприлично легко, я бы просто добавил функцию в модель контекста данных, и я мог бы назвать ее так.
bool result = FooContext.UserDefinedFunction(someParameter);
Используя Entity Framework, я добавил эту функцию в свою модель, и она появляется в SomeModel.Store\Хранимые процедуры в браузере моделей.
Модель не создала код для функции, 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();
Но я получил следующее сообщение об ошибке:
ФункцияИмпорт "UserDefinedFunction" не может быть найденный в контейнере "FooEntities".
Имена изменены для защиты невинных.
TL;DR: Как вызвать скалярно-оцененные пользовательские функции с помощью Entity Framework 4.0?