相关疑难解决方法(0)

实体框架存储过程表值参数

我正在尝试调用接受表值参数的存储过程.我知道实体框架中没有直接支持这个,但据我所知,你可以使用ExecuteStoreQuery命令off来实现ObjectContext.我有一个通用的实体框架存储库,我有以下ExecuteStoredProcedure方法:

public IEnumerable<T> ExecuteStoredProcedure<T>(string procedureName, params object[] parameters)
{
    StringBuilder command = new StringBuilder();
    command.Append("EXEC ");
    command.Append(procedureName);
    command.Append(" ");

    // Add a placeholder for each parameter passed in
    for (int i = 0; i < parameters.Length; i++)
    {
        if (i > 0)
            command.Append(",");

        command.Append("{" + i + "}");
    }

    return this.context.ExecuteStoreQuery<T>(command.ToString(), parameters);
}
Run Code Online (Sandbox Code Playgroud)

命令字符串最终如下:

EXEC someStoredProcedureName {0},{1},{2},{3},{4},{5},{6},{7}
Run Code Online (Sandbox Code Playgroud)

我试图在接受表值参数的存储过程上运行此方法,并且它会中断.我在这里读到需要的类型SqlParameter参数和表值参数需要SqlDbType设置为Structured.所以我这样做了,我得到一个错误说明:

The table type parameter p6 must have a …
Run Code Online (Sandbox Code Playgroud)

c# stored-procedures entity-framework table-valued-parameters ef-code-first

64
推荐指数
4
解决办法
8万
查看次数