[英]Entity Framework SQLQuery Oracle specified method is not supported
[英]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.