【发布时间】:2020-12-17 00:48:24
【问题描述】:
是否可以使用 EF 执行标量 udf?
谢谢
【问题讨论】:
是否可以使用 EF 执行标量 udf?
谢谢
【问题讨论】:
是的。这是支持的,这里是如何做的快速浏览。
更改您的 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
【讨论】:
假设您有一个名为 MyDbSet 的表,它可以是您想要的任何表。然后创建一个 guid "test" 的记录,然后使用下面的方法执行一个 ef 标量函数并返回结果。
MyDbSet
.Where(o => o.Guid == "test")
.Select(o => EF.Functions.ToTsVector(request.Keywords))
.FirstOrDefault();
【讨论】: