在实体框架中执行存储过程

时间:2013-09-11 17:56:44

标签: linq entity-framework

您好我正在尝试使用如下的实体框架执行存储过程。

var empid = new SqlParameter("@empid", "E001");
                    var dept = new SqlParameter("@dept", "D001");

                    var selectData = dbContext.ExecuteStoreQuery<EmpDO>("getEmployeeDetails @empid, @deptid", empid, deptid);

当我尝试运行我的应用程序时,我遇到了错误。有什么想法吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

这是错字吗?变量为dept,但函数调用中使用的变量为deptid。代码在下面更改。

var empid = new SqlParameter("@empid", "E001");
var dept = new SqlParameter("@dept", "D001");

var selectData = dbContext.ExecuteStoreQuery<EmpDO>("getEmployeeDetails @empid, @deptid", empid, dept);

我只看了community site,他们有......

  

已知问题

     

使用诸如的方法直接执行存储命令   ObjectContext.ExecuteStoreCommandObjectContext.ExecuteStoreQuery   不受支持。但是,您可以从中创建一个DbCommand   使用如下代码的数据库连接:

using EFProviderWrapperToolkit;
...
context.Connection.GetStoreConnection().CreateCommand()

答案 1 :(得分:0)

请查看以下链接,查看之前提出的问题。除非现在在EFPrivderWrapperToolkit中实现该方法,否则这应该回答您关于为什么会收到错误的问题。 DbCommand方法被工具包覆盖但未实现。

/// <summary>
        /// Creates and returns a <see cref="T:System.Data.Common.DbCommand"/> object associated with the current connection.
        /// </summary>
        /// <returns>
        /// A <see cref="T:System.Data.Common.DbCommand"/> object.
        /// </returns>
        protected override DbCommand CreateDbCommand()
        {
            throw new NotSupportedException();
        }

Similar StackOverflow Question