Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 为什么ExecuteFunction方法只能通过ObjectContext子类中的base.ExecuteFunction使用?_Asp.net Mvc_Entity Framework_Repository_Objectcontext - Fatal编程技术网

Asp.net mvc 为什么ExecuteFunction方法只能通过ObjectContext子类中的base.ExecuteFunction使用?

Asp.net mvc 为什么ExecuteFunction方法只能通过ObjectContext子类中的base.ExecuteFunction使用?,asp.net-mvc,entity-framework,repository,objectcontext,Asp.net Mvc,Entity Framework,Repository,Objectcontext,我正在尝试从网站存储库中的ObjectContext对象调用ObjectContext.ExecuteFunction 存储库是通用的,所以我所拥有的只是一个ObjectContext对象,而不是一个从实体框架中实际表示我的特定对象的对象 下面是使用ExecuteFunction方法生成的代码示例: [global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4

我正在尝试从网站存储库中的ObjectContext对象调用ObjectContext.ExecuteFunction

存储库是通用的,所以我所拥有的只是一个ObjectContext对象,而不是一个从实体框架中实际表示我的特定对象的对象

下面是使用ExecuteFunction方法生成的代码示例:

[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")]
public global::System.Data.Objects.ObjectResult<ArtistSearchVariation> FindSearchVariation(string source)
{
    global::System.Data.Objects.ObjectParameter sourceParameter;
    if ((source != null))
    {
        sourceParameter = new global::System.Data.Objects.ObjectParameter("Source", source);
    }
    else
    {
        sourceParameter = new global::System.Data.Objects.ObjectParameter("Source", typeof(string));
    }
    return base.ExecuteFunction<ArtistSearchVariation>("FindSearchVariation", sourceParameter);   
}
谢谢,

Matt

您不必使用base.ExecuteFunction,ExecuteFunction方法(和重载)是公共的,不受保护,因此您可以从外部站点调用它们。调用它有困难吗?

是的,函数没有显示。我在问题中举了一个我试过的例子。
public class Repository<E, C> : IRepository<E, C>, IDisposable
    where E : EntityObject
    where C : ObjectContext
{
    private readonly C _ctx;

    // ...

    public ObjectResult<E> ExecuteFunction(string functionName, params[])
    {
        // Create object parameters

        return _ctx.ExecuteFunction<E>(functionName, /* parameters */)
    }
 }
public ArtistSearchVariation findSearchVariation(string source)
{
    System.Data.Objects.ObjextContext _ctx = new ObjectContext(/* connection string */);
    System.Data.Objects.ObjectParameter sourceParam = new  ObjectParameter("Source", source);

    return _ctx.ExecuteFunction<ArtistSearchVariation>("FindSearchVariation", sourceParam);   
}