2015-10-08 5 views
-1

Я использовал следующий Начало работы, чтобы создать свой первый WCF службы данных с подключением к базе данных. https://msdn.microsoft.com/en-us/data/gg192995.aspxслужбы WCF Data Request Error

Я сделал это до шага 13, но я не получаю никакого корма XML. Вместо этого я получаю следующее сообщение (к сожалению, на немецком языке):

На сервере произошла ошибка при обработке запроса . Сообщение об исключении Выражение типа „System.Data.Entity.Core.Objects.ObjectContext“ не может быть использован для типа возврата «System.Data.Objects.ObjectContext„“. Для подробной информации в журналах сервера. Исключение трассировки стека выглядит следующим образом:

на System.Linq.Expressions.Expression.ValidateLambdaArgs (тип DelegateType, выражение & тела, ReadOnlyCollection 1 parameters) bei System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable 1 Параметры) при System.Data.Services.Providers.DbContextHelper.CreateDbContextAccessor (тип тип) (при Тип System.Data.Services.Providers.DbContextHelper.GetDbContextAccessor типа) в System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, Object& dataSourceInstance, Boolean& isInternallyCreatedProvider) bei System.Data.Services.DataService 1.CreateProvider() в System.Data.Services.DataService 1.HandleRequest() bei System.Data.Services.DataService 1.ProcessRequestForMessage (поток тело сообщения) на SyncInvokeProcessRequestForMessage (Object, Object [] , Object []) (например System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke Object, Object [] входы, Object [] & выходы) в 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.ProcessMessage31 (MessageRpc & Rpc) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & Rpc) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & RPC) в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11 (MessageRpc & Rpc) при System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (012,351,641 MessageRpc RPC) в System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean isOperationContextSet)

Может быть, это не работает из-за новых версий с SQL Server, IIS или Visual Studio?

Может быть, некоторые проблемы пространства имен?

Сообщение об ошибке говорит ничего System.Data.Entity.Core.Objects.ObjectContext не может быть преобразован в System.Data.Objects.ObjectContext.

Вот код из WcfDataService1.svc.cs файла

//------------------------------------------------------------------------------ 
// <copyright file="WebDataService.svc.cs" company="Microsoft"> 
//  Copyright (c) Microsoft Corporation. All rights reserved. 
// </copyright> 
//------------------------------------------------------------------------------ 
using System; 
using System.Collections.Generic; 
using System.Data.Services; 
using System.Data.Services.Common; 
using System.Linq; 
using System.ServiceModel.Web; 
using System.Web; 
using System.ServiceModel; 

namespace RestWcfService 
{ 
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
    public class WcfDataService1 : DataService<AdventureWorksLTEntities> 
    { 
     // This method is called only once to initialize service-wide policies. 
     public static void InitializeService(DataServiceConfiguration config) 
     { 
      // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc. 
      // Examples: 
      config.UseVerboseErrors = true; 
      config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead); 
      config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All); 
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; 
     } 
    } 
} 

ответ

0

Это общая проблема при обновлении с предыдущей версии Entity Framework до версии 6. System.Data.Objects.ObjectContext не часть EF 6. Лучшее, что нужно сделать, это удалить пакеты и переустановить.

Заменить System.Data.Objects.ObjectContext => System.Data.Entity.Core.Objects.ObjectContext

https://msdn.microsoft.com/en-us/data/upgradeef6.aspx

+0

Спасибо за это предложение! Я переустановил EF до 6.1.3 и использовал генерацию кода. Но проблема такая же, как и раньше. Единственное, что не работает, - это обновление пространств имен. Мне просто нечего обновлять. –

Смежные вопросы