【发布时间】:2017-11-23 13:12:39
【问题描述】:
我正在使用实体框架 EDMX,它会自动生成存储过程执行所需的函数,作为基于 DBContext 类的自动生成类的一部分。
例如,这是一个自动生成的函数来执行存储过程:
public virtual ObjectResult<Company> GetCompanies(string companyName)
{
var companyNameParameter = companyName != null ?
new ObjectParameter("CompanyName", companyName) :
new ObjectParameter("CompanyName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Company>("GetCompanies", companyNameParameter);
}
由于我在一些存储过程中使用动态 SQL,我想覆盖 ExecuteFunction 并使用“自定义 ExecuteFunction”函数在那里添加一些清理函数,这些函数将循环遍历每个参数并对其进行清理。我想知道,也许我可以创建一个自定义 ObjectContext 类并以某种方式使用它?
我怎样才能以我仍然能够使用 EDMX 实体框架自动生成函数的方式做到这一点?
我知道有一些解决方案可以清理 SP 内的参数,但我仍然想了解如何将自定义 ExecuteFunction 函数或自定义 ObjectContext 与 EDMX 一起使用。
【问题讨论】:
-
你不应该有来清理它......如果问题是你正在连接值并使用
EXEC (@sql)- 那么:don'不要那样做 - 你应该使用EXEC sp_executesql @sql, N'{args definition}', @arg0, @arg1, ...- 它允许你完全参数化动态SQL;更多上下文:docs.microsoft.com/en-us/sql/relational-databases/… -
@MarcGravell 我知道,但我仍然想了解如何将自定义 ExecuteFunction 函数或自定义 ObjectContext 与 EDMX 一起使用。
标签: c# entity-framework