我创建了一个空的asp.net项目,下载以下包:
Microsoft.OData.EntityFrameworkProvider -Pre
所以我得到了WCF数据服务5.6.0和对实体框架6.0的支持。所有引用都已成功添加到项目中。
然后,我添加了一个新的ado.net实体模型,并从数据库中只生成一个实体。然后,我使用以下代码添加一个WCF数据服务:
#if DEBUG
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
#endif
public class MyService : DataService<MyContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
#if DEBUG
config.UseVerboseErrors = true;
#endif
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
}但是当我在IE中查看服务时,我得到以下错误:
服务器在处理请求时遇到错误。异常消息是‘'System.Data.Entity.Core.Objects.ObjectContext’类型的表达式不能用于返回类型'System.Data.Objects.ObjectContext'‘。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪为:
在System.Linq.Expressions.Expression.ValidateLambdaArgs(Type类型,Expression和body,在System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor(Type类型)在System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(Type类型)在System.Data.Services.DataService1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, Object& dataSourceInstance, Boolean& isInternallyCreatedProvider) at System.Data.Services.DataService1.CreateProvider()在System.Data.Services.DataService1.HandleRequest() at System.Data.Services.DataService1.ProcessRequestForMessage(Stream messageBody)在System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object实例在SyncInvokeProcessRequestForMessage(Object,Object[],Object[] ),Object[]输入,在System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& ProcessMessage11(MessageRpc& rpc)
我还漏掉了什么吗?
发布于 2013-11-13 17:55:51
问题解决了。用户必须在服务中添加以下内容:
using System.Data.Services.Providers;并将基类更改为:
public class MyService : EntityFrameworkDataService<MyContext>https://stackoverflow.com/questions/19950537
复制相似问题