实体框架标量函数映射

时间:2012-09-12 17:02:07

标签: entity-framework tsql entity-framework-4 user-defined-functions

我有标量函数:

CREATE FUNCTION [dbo].[CheckLocation]
(
    @locationId Int
)
RETURNS bit
AS
BEGIN
    //code
END

我想在Entity Framework上下文中使用它。

我在* .edmx文件中添加了这个:

<Function Name="CheckLocation" ReturnType="bit" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" >
<Parameter Name="locationId" Type="int" Mode="In" />
</Function>

我还创建了一个使用EdmFunctionAttribute修饰的方法的部分类:

public partial class MainModelContainer
{
    [EdmFunction("MainModel.Store", "CheckLocation")]
    public bool CheckLocation(int locationId)
    {
        throw new NotSupportedException("Direct calls not supported");
    }
}

我尝试使用这个函数:

Context.CheckLocation(locationId);

获取NotSupportedException(“不支持直接调用”)。 它适用于Select方法,但它不适合我。 请帮忙! 如何在没有select方法的情况下调用此函数?

1 个答案:

答案 0 :(得分:2)

您需要将其作为选择

进行访问
var students = context.Locations
    .Select ( new  {  location= CheckLocation(locationId)}):