1

我目前正在使用 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](String commandText , Object[] 参数)\r\n 在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery[TElement](String sql, Object[] 参数)\r\n 在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQueryAsIEnumerable [TElement](String sql, Object[] 参数)\r\n at System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery(Type elementType, String sql,Object[] 参数)\r\n 在 System.Data.Entity.Internal.InternalSqlNonSetQuery.GetEnumerator()\r\n 在 System.Data.Entity.Internal.InternalSqlQuery1.GetEnumerator()\r\n at System.Linq.SystemCore_EnumerableDebugView1.get_Items()"

4

2 回答 2

2

这在 codeplex “Community Entity Framework Provider Wrappers”站点的“Known Problems”部分中提到。引用:

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

    using EFProviderWrapperToolkit;
    ...
    context.Connection.GetStoreConnection().CreateCommand()
于 2013-12-16T16:48:21.093 回答
1

答案很简单。我不确定你是否有 EFProviderWrapperToolkit 的源代码,你应该得到它并看看它。您会注意到从 DbConnection 继承的 DbConnectionWrapper 覆盖了 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();
        }
于 2013-06-02T08:52:27.057 回答