簡體   English   中英

EF在SqlQuery中生成“不支持指定的方法”錯誤

[英]EF generating “Specified method is not supported” error in SqlQuery

我目前正在使用Entity Framework 5我試圖編寫以下代碼:

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

但是我收到以下錯誤:

Specified method is not supported.

有人能告訴我這個問題的解決方案嗎?

堆棧跟蹤

“在EFProviderWrapperToolkit.DbConnectionWrapper.CreateDbCommand()\\ r \\ n at System.Data.Common.DbConnection.CreateCommand()\\ r \\ n在System.Data.Objects.ObjectContext.CreateStoreCommand(String commandText,Object [] parameters)\\ r \\ n \\ n at System.Data.Objects.ObjectContext.ExecuteStoreQueryInternal [TElement](String commandText,String entitySetName,MergeOption mergeOption,Object [] parameters)\\ r \\ n在System.Data.Objects.ObjectContext.ExecuteStoreQuery [TElement](String commandText ,對象[]參數)\\ 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在System.Data.Entity.InternalContext.ExecuteSqlQuery(類型為elementType,String sql,Object []參數)\\ r \\ n在System.Data.Entity中System.Data.Entity.Internal.InternalSqlQuery中的.Internal.InternalSqlNonSetQuery.GetEnumerator()\\ r \\ n; 1.GetEnumerator()\\r\\n at System.Linq.SystemCore_EnumerableDebugView 1.GetEnumerator()\\r\\n at System.Linq.SystemCore_EnumerableDebugView 1.get_Items()“

這在codeplex“Community Entity Framework Provider Wrappers” 站點的 “已知問題”部分中提到。 舉例:

不支持使用ObjectContext.ExecuteStoreCommand或ObjectContext.ExecuteStoreQuery等方法直接執行存儲命令。 但是,您可以使用以下代碼從數據庫連接創建DbCommand:

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

答案很簡單。 我不確定你是否有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();
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM