实体框架标量函数映射(Entity Framework scalar function mappin

2019-09-22 08:58发布

我有标量函数:

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

我想在实体框架上下文中使用它。

我在* .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异常(“直接调用不支持”)。 它的工作原理选择方法中,但它并不适合我。 请帮助! 我怎么能叫不选择的方法这个功能呢?

Answer 1:

你需要访问它作为一个选择

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


文章来源: Entity Framework scalar function mapping