1

我创建了一个空的 asp.net 项目,下载以下包:

Microsoft.OData.EntityFrameworkProvider –Pre

所以我得到了 WCF Data Services 5.6.0 和对 Entity Framework 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 delegateType, Expression& body, ReadOnlyCollection 1 parameters) at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable1 参数) 在 System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor(Type type) 在 System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor(类型 type) 在 System.Data.Services.DataService 1.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) at SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[] & outputs) 在 System.ServiceModel。 Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) ) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher 的 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)。在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) 在 System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 的 ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)

我还缺少其他东西吗?

4

1 回答 1

1

问题解决了。必须将以下内容添加到服务中:

using System.Data.Services.Providers;

并将基类更改为:

public class MyService : EntityFrameworkDataService<MyContext>
于 2013-11-13T09:55:51.020 回答