使用实体框架

时间:2017-11-23 13:12:39

标签: c# entity-framework

我正在使用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一起使用。

1 个答案:

答案 0 :(得分:1)

  

我怎样才能以这种方式使用EDMX Entity框架自动生成函数?

由于生成的函数是虚函数,因此可以在子类中覆盖它们。

例如

public class MyDbContext2 : MyDbContext
{
    public override ObjectResult<Company> GetCompanies(string companyName)
    {
       Sanatize(companyname);
       return base.GetCompanies(companyName);
    }
//. . .
}