我正在使用Entity Framework 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并使用&#34; Custom ExecuteFunction&#34;函数在那里添加一些sanitize函数,它们将循环遍历每个参数并清理它。我想知道,也许我可以创建一个自定义的ObjectContext类并以某种方式使用它?
我怎样才能以这种方式使用EDMX Entity框架自动生成函数?
我知道有一些解决方案可以清理SP中的参数,但我仍然想学习如何将自定义ExecuteFunction函数或自定义ObjectContext与EDMX一起使用。
答案 0 :(得分:1)
我怎样才能以这种方式使用EDMX Entity框架自动生成函数?
由于生成的函数是虚函数,因此可以在子类中覆盖它们。
例如
public class MyDbContext2 : MyDbContext
{
public override ObjectResult<Company> GetCompanies(string companyName)
{
Sanatize(companyname);
return base.GetCompanies(companyName);
}
//. . .
}