【问题标题】:EF generating "Specified method is not supported" error in SqlQueryEF 在 SqlQuery 中生成“不支持指定的方法”错误
【发布时间】:2018-05-24 21:12:46
【问题描述】:

我目前正在使用 Entity Framework 5 我尝试编写以下代码:

var result = context.Database.SqlQuery<Entity>("SELECT * FROM ref.Entity");

但我收到以下错误:

Specified method is not supported.

谁能告诉我解决这个问题的方法?

堆栈跟踪

"在 EFProviderWrapperToolkit.DbConnectionWrapper.CreateDbCommand()\r\n 在 System.Data.Common.DbConnection.CreateCommand()\r\n 在 System.Data.Objects.ObjectContext.CreateStoreCommand(String commandText, Object[] 参数)\r\n 在 System.Data.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, MergeOption mergeOption, Object[] 参数)\r\n 在 System.Data.Objects.ObjectContext.ExecuteStoreQuery[TElement] (字符串 commandText,Object[] 参数)\r\n 在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery[TElement](字符串 sql,Object[] 参数)\r\n 在 System.Data.Entity.Internal。 InternalContext.ExecuteSqlQueryAsIEnumerable[TElement](String sql, Object[] parameters)\r\n at System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery(Type elementType, String sql, Object[] parameters)\r\n at System。 Data.Entity.Internal.InternalSqlNonSetQuery.GetEnumerator()\r\n 在 System.Data.Entity.Internal.InternalSqlQuery@9876 54324@1.get_Items()"

【问题讨论】:

  • ref 将是未定义的...... SQL 不知道该怎么做?
  • 不理解你的评论,ExecuteSqlCommand() 也返回 System.NotSupportedException
  • 你能发布异常堆栈跟踪吗
  • 落入 EFProviderWrapperToolkit。问题解决了here

标签: c# entity-framework-5


【解决方案1】:

这在 codeplex“社区实体框架提供程序包装器”site 的“已知问题”部分中提到。引用:

不支持使用 ObjectContext.ExecuteStoreCommand 或 ObjectContext.ExecuteStoreQuery 等方法直接执行存储命令。但是,您可以使用如下代码从数据库连接创建 DbCommand:

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

【讨论】:

    【解决方案2】:

    答案很简单。我不确定你是否有 EFProviderWrapperToolkit 的源代码,你应该得到它并看看它。您会注意到 DbConnectionWrapper,它继承自 DbConnection,它覆盖了 CreateDbCommand 方法,但不为其提供任何功能,而是抛出异常。

    /// <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();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 2011-09-09
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多