我目前正在使用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 []参数)\ r \ n在System.Data.Objects.ObjectContext.ExecuteStoreQueryInternal [TElement](String commandText,String entitySetName,MergeOption mergeOption,Object [] parameters)\ 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 [] parameters)\ r \ n在System.Data.Entity.InternalContext.ExecuteSqlQuery(Type elementType,String sql,Object [] parameters)\ r \ n在System。 System.Data.Entity.Internal.InternalSqlQuery
1.GetEnumerator()\r\n at System.Linq.SystemCore_EnumerableDebugView
中的Data.Entity.Internal.InternalSqlNonSetQuery.GetEnumerator()\ r \ n 1.get_Items()“
答案 0 :(得分:2)
这在codeplex“社区实体框架提供程序包装器”site的“已知问题”部分中提到。举例:
不支持使用ObjectContext.ExecuteStoreCommand或ObjectContext.ExecuteStoreQuery等方法直接执行存储命令。但是,您可以使用以下代码从数据库连接创建DbCommand:
using EFProviderWrapperToolkit; ... context.Connection.GetStoreConnection().CreateCommand()
答案 1 :(得分:1)
答案很简单。我不确定你是否有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();
}