WCF-OData-Service und EF 6-Problem - Entitäten können nicht mit dem Odata-Service verfügbar gemacht werden

8

Ich verwende WCF Data Service (Odata) mit .NET Framework 4.5.1 und EF 6.1. Ich habe den ersten Code verwendet, um ein EF-Modell zu erstellen. Wenn ich dieses EF-Modell (AddProjectModel.cs) auf WCF OData Service (WcfDataService1.svc) verweisen, wird folgende Fehlermeldung ausgelöst:

Fehler:

Der Server hat einen Fehler bei der Verarbeitung der Anfrage festgestellt. Die Ausnahmebedingungsnachricht lautet 'Beim Datenkontexttyp' AddProjectModel 'gibt es eine obere IQueryable-Eigenschaft' Assets ', deren Elementtyp kein Entitätstyp ist. Stellen Sie sicher, dass die IQueryable-Eigenschaft vom Entitätstyp ist, oder geben Sie das IgnoreProperties-Attribut im Datenkontexttyp an, um diese Eigenschaft zu ignorieren. Weitere Informationen finden Sie in den Serverprotokollen. Die Ausnahmestapelüberwachung ist:

um System.Data.Services.Providers.ReflectionServiceProvider.PopulateMetadata (ProviderMetadataCacheItem metadataCacheItem) bei System.Data.Services.Providers.BaseServiceProvider.LoadMetadata (Boolean skipServiceOperations) bei System.Data.Services.DataService 1.CreateInternalProvider(Object dataSourceInstance) at System.Data.Services.DataService 1.CreateMetadataAndQueryProviders ( IDataServiceMetadataProvider & amp; metadataProviderInstance, IDataServiceQueryProvider & amp; queryProviderInstance, object & amp; dataSourceInstance, boolean & amp; isInternallyCreatedProvider) bei System.Data.Services.DataService 1.CreateProvider() at System.Data.Services.DataService 1.HandleRequest () bei System.Data.Services.DataService'1.ProcessRequestForMessage (Stream messageBody) bei SyncInvokeProcessRequestForMessage (Object, Object [], Object []) bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (Object-Instanz, Object [] -Inputs, Object [] & amp; Outputs) bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc & amp; rp c) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & amp; rpc) bei System. ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & amp; rpc) bei System.ServiceModel.Dispatcher.MessageRpc .Process (Boolean isOperationContextSet)

Hier ist mein WCF-Datenservice: WcfDataService1.svc

%Vor%

Mein Code erstes Modell: AddProjectModel.cs

%Vor%

Asset-Klasse:

%Vor%

Projektklasse:

%Vor%

Ich weiß nicht, wie ich dieses Problem lösen kann. Könnten Sie mir bitte sagen, was ich hier vermisse?

Ich benutze Oracle-Datenbank und wir haben kürzlich eine Lizenz von devart für dotConnect für Oracle erworben.

Danke,

Hallo,

Ich habe diesen Fehler behoben, indem ich das Attribut [DataServiceKey] mit Primärschlüssel für jede POCO-Klasse eingerichtet habe. Bitte beachten Sie: Ссылка .

Jetzt kann ich Entitäten über den Odata-Dienst verfügbar machen, aber wenn ich versuche, auf die Entitätssammlung zuzugreifen, indem ich URL (zB ... / WcfDataService1.svc / Assets) eingibt, wird folgender Fehler ausgegeben:

Fehler:

%Vor%

Wie löse ich das?

Danke,

    
user659469 16.09.2014, 15:52
quelle

1 Antwort

33

Um WCF DataService mit EF6 zu verwenden, muss noch etwas Arbeit geleistet werden. Bitte überprüfen Sie die folgenden zwei Blogposts für Details:

Verwenden von WCF Data Services 5.6.0 mit Entity Framework 6+

Der WCF Data Services Entity Framework-Anbieter wurde mit WCF Data Service 5.6.2

aktualisiert

Im Allgemeinen benötigen Sie die folgenden zwei Schritte:

  1. Installieren Sie das neueste Nuget-Paket Microsoft.OData.EntityFrameworkProvider gemäß der Anleitung auf dieser Seite;
  2. Ersetzen Sie DataService durch EntityFrameworkDataService, sagen Sie in Ihrem WcfDataService1.svc:

    öffentliche Klasse WcfDataService1: EntityFrameworkDataService

Karata 19.09.2014, 06:27
quelle

Tags und Links