我创建了一个空的 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, IEnumerable
1 参数) 在 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.DataService
1.CreateProvider() 在 System.Data.Services.DataService1.HandleRequest() at System.Data.Services.DataService
1.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)
我还缺少其他东西吗?