实体框架核心:用户定义的SQL函数

时间:2018-04-29 17:37:02

标签: entity-framework entity-framework-core

是否可以从EF Core的查询界面调用用户定义的SQL函数?例如,生成的SQL看起来像

select * from X where dbo.fnCheckThis(X.a, X.B) = 1

就我而言,此子句是对其他Query()方法调用的补充,因此FromSQL()不是一个选项。

1 个答案:

答案 0 :(得分:2)

我刚刚在this article的帮助下进行了处理(H / T @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));