Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Entity framework 在ExecuteStoreQuery EF中执行存储的过程。这是EF中的错误吗?_Entity Framework - Fatal编程技术网

Entity framework 在ExecuteStoreQuery EF中执行存储的过程。这是EF中的错误吗?

Entity framework 在ExecuteStoreQuery EF中执行存储的过程。这是EF中的错误吗?,entity-framework,Entity Framework,尝试使用以下代码在EF中执行存储的过程: var params = new object[] {new SqlParameter("@FirstName", "Bob")}; return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("GetByName", params); 上面的ExecuteStoreQuery代码有什么错?使用ExecuteQuery函数,而不是ExecuteStor

尝试使用以下代码在EF中执行存储的过程:

var params = new object[] {new SqlParameter("@FirstName", "Bob")};
return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("GetByName", params);

上面的ExecuteStoreQuery代码有什么错?

使用ExecuteQuery函数,而不是ExecuteStoreQuery,它更适合于“特殊”查询

var parameters=newobjectparameter[]{newobjectparameter(“FirstName”,“Bob”)};
返回此参数。_repositoryContext.ObjectContext.ExecuteFunction(“GetByName”,参数);

存储过程也可以映射为上下文中的函数,因此可以用作类型化方法。看一看。

忽略
params
是保留字这一事实

您认为您的查询需要:

var params = new object[] {new SqlParameter("@FirstName", "Bob")};
return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("exec GetByName @FirstName", params);
var-params=new-object[]{new-SqlParameter(“@FirstName”,“Bob”)};
返回此参数。_repositoryContext.ObjectContext.ExecuteStoreQuery(“exec GetByName@FirstName”,参数);

还应该说,如果该过程是数据库和数据模型的标准部分,那么您应该这样做,以便它可以直接在您的上下文中使用。

这是我在EF中使用SP时所做的,如果您有多个参数:-

        public virtual ObjectResult<GetEpisodeCountByPracticeId_Result> GetEpisodeCountByPracticeId(Nullable<int> practiceId, Nullable<System.DateTime> dat1)
    {

        SqlParameter practiceIdParameter = practiceId.HasValue ?
            new SqlParameter() { ParameterName = "practiceId", Value = practiceId, SqlDbType = SqlDbType.Int } :
            new SqlParameter() { ParameterName = "practiceId", SqlDbType = SqlDbType.Int }; 

        SqlParameter dat1Parameter = dat1.HasValue ?
            new SqlParameter() { ParameterName = "dat1", Value = dat1, SqlDbType = SqlDbType.DateTime }:
            new SqlParameter() { ParameterName = "dat1", SqlDbType = SqlDbType.DateTime }; 


        return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<GetEpisodeCountByPracticeId_Result>("exec GetEpisodeCountByPracticeId @practiceId, @dat1", practiceIdParameter, dat1Parameter);
    }
公共虚拟对象结果GetEpisodeCountByPracticeId(可为null的practiceId,可为null的dat1) { SqlParameter practiceIdParameter=practiceId.HasValue? 新的SqlParameter(){ParameterName=“practiceId”,Value=practiceId,SqlDbType=SqlDbType.Int}: 新的SqlParameter(){ParameterName=“practiceId”,SqlDbType=SqlDbType.Int}; SqlParameter dat1Parameter=dat1.HasValue? 新的SqlParameter(){ParameterName=“dat1”,Value=dat1,SqlDbType=SqlDbType.DateTime}: 新的SqlParameter(){ParameterName=“dat1”,SqlDbType=SqlDbType.DateTime}; 返回((IObjectContextAdapter)this.ObjectContext.ExecuteStoreQuery(“exec GetEpiosodeCountByPracticeId@practiceId,@dat1”,practiceIdParameter,dat1Parameter”); }
如果您不在commandText属性中添加参数(例如@practiceId),则会收到收到的错误

如何使用ExecuteStoreQuery方法实现?我无法控制将生成什么样的sql语句。这完全取决于ExecuteStoreQuery方法。谢谢,伙计。。“exec”一词是可选的。测试时返回此参数。_repositoryContext.ObjectContext.ExecuteStoreQuery(“GetByName@FirstName”,params)并正常工作!
var params = new object[] {new SqlParameter("@FirstName", "Bob")};
return this._repositoryContext.ObjectContext.ExecuteStoreQuery<ResultType>("exec GetByName @FirstName", params);
        public virtual ObjectResult<GetEpisodeCountByPracticeId_Result> GetEpisodeCountByPracticeId(Nullable<int> practiceId, Nullable<System.DateTime> dat1)
    {

        SqlParameter practiceIdParameter = practiceId.HasValue ?
            new SqlParameter() { ParameterName = "practiceId", Value = practiceId, SqlDbType = SqlDbType.Int } :
            new SqlParameter() { ParameterName = "practiceId", SqlDbType = SqlDbType.Int }; 

        SqlParameter dat1Parameter = dat1.HasValue ?
            new SqlParameter() { ParameterName = "dat1", Value = dat1, SqlDbType = SqlDbType.DateTime }:
            new SqlParameter() { ParameterName = "dat1", SqlDbType = SqlDbType.DateTime }; 


        return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<GetEpisodeCountByPracticeId_Result>("exec GetEpisodeCountByPracticeId @practiceId, @dat1", practiceIdParameter, dat1Parameter);
    }