Asp.net mvc 为什么ExecuteFunction方法只能通过ObjectContext子类中的base.ExecuteFunction使用?
我正在尝试从网站存储库中的ObjectContext对象调用ObjectContext.ExecuteFunction 存储库是通用的,所以我所拥有的只是一个ObjectContext对象,而不是一个从实体框架中实际表示我的特定对象的对象 下面是使用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
[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);
}