【问题标题】:How to execute a scalar user-defined function in EF如何在 EF 中执行标量用户定义函数
【发布时间】:2020-12-17 00:48:24
【问题描述】:

是否可以使用 EF 执行标量 udf?

谢谢

【问题讨论】:

    标签: tsql entity-framework-4


    【解决方案1】:

    是的。这是支持的,这里是如何做的快速浏览。

    更改您的 EF SSDL:

    <Function Name="AvgStudentGrade" ReturnType="decimal" Schema="dbo" >
      <Parameter Name="studentId" Mode="In" Type="int" />
    </Function>
    

    添加具有适当属性的方法存根:

    [EdmFunction("SchoolModel.Store", "AvgStudentGrade")]
    public static decimal? AvgStudentGrade(int studentId)
    {
        throw new NotSupportedException("Direct calls are not supported.");
    }
    

    使用它:

    var students = from s in context.People
                       where s.EnrollmentDate != null
                       select new
                       {
                           name = s.LastName,
                           avgGrade = AvgStudentGrade(s.PersonID)
                       };
    

    更多信息和完整示例:
    http://msdn.microsoft.com/en-us/library/dd456847(VS.100).aspx

    【讨论】:

    • 感谢您的回复。我只能看到 .edmx 和设计器文件。没有可用的 SSDL 文件。如何找到它?谢谢
    【解决方案2】:

    假设您有一个名为 MyDbSet 的表,它可以是您想要的任何表。然后创建一个 guid "test" 的记录,然后使用下面的方法执行一个 ef 标量函数并返回结果。

    MyDbSet
    .Where(o => o.Guid == "test")
    .Select(o => EF.Functions.ToTsVector(request.Keywords))
    .FirstOrDefault();
    

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2015-07-12
      • 1970-01-01
      相关资源
      最近更新 更多