在EF Core的查询接口中是否可以调用用户定义的SQL函数?例如,生成的SQL代码应该如下:
select * from X where dbo.fnCheckThis(X.a, X.B) = 1
在我的情况下,这个子句是除了其他Query()方法调用之外的一个选择,因此FromSQL()不是一个选项。
在EF Core的查询接口中是否可以调用用户定义的SQL函数?例如,生成的SQL代码应该如下:
select * from X where dbo.fnCheckThis(X.a, X.B) = 1
在我的情况下,这个子句是除了其他Query()方法调用之外的一个选择,因此FromSQL()不是一个选项。
在这篇文章的帮助下(感谢@IvanStoev在问题中的评论),我成功地完成了这个操作。
在你的DbContext
类中:
[DbFunction("my_user_function_name")]
public static bool SatisfiesMyUserFunction(int i)
{
throw new Exception(); // this code doesn't get executed; the call is passed through to the database function
}
DbContext
类中也必须包含该函数。var query = db.Foos.Where(f => MyDbContext.SatisfiesMyUserFunction(f.FieldValue));
DbContext
中,我不需要将其设为静态。这意味着我可以这样做:var query = db.Foos.Where(f => db.SatisfiesMyUserFunction(f.FieldValue));
- Pluto