2016-08-06 47 views
0

Ich bin Neuling bei WCF und habe eine WCF-Dienstbibliothek und ein Konsolenanwendungsprojekt erstellt. Ich verwende Entity Framework (Datenbank zuerst) für die Verbindung mit der Datenbank in meinem WCF-Service-Bibliotheksprojekt. Ich möchte eine Klasse an den WCF-Dienst senden (mein Problem). In meinem WCF-Projekt habe ich ein ITest.cs und Test.cs, die unten mögen, sind:Übergabe der Klasse von der Konsolenanwendung an den WCF-Dienst

ITest.cs

[OperationContract] 
bool GetData(role rr); 

Test.cs

public bool GetData(role rr) 
    { 
     try 
     { 
      iFlowEntities db = new iFlowEntities(); 
      db.roles.Add(rr); 
      db.SaveChanges(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 

und ich hinzufügen, um dieses Service Bezug auf meine -Konsolenanwendungsprojekt Referenz und ich erstelle mein DB-Klassenmodell in der Konsolenanwendung und benutze diesen Service dann wie folgt:

 Role rr = new Role(); 
     rr.role1 = 10; 
     rr.title = "sdsafas"; 
     TestClient client = new TestClient(); 
     bool re = client.GetData(rr); //This line has error 

aber in diesem bool re = client.GetData(rr); Ich habe diesen Fehler:

Fehler 1
Die beste überladene Methode Spiel für 'ConsoleApplication1.ServiceReference3.TestClient.GetData (ConsoleApplication1.ServiceReference3.role)' hat einige ungültige Argumente

Fehler 2
Argument 1: Konvertierung von 'ConsoleApplication1.Role' auf 'ConsoleApplication1.ServiceReference3.role'

Ich googelte aber jedes Beispiel hat keine Lösung für mein Problem.

+0

Ist es möglich, dass Sie voll Testclient zu qualifizieren, um zu sehen, wenn Sie den gleichen Fehler dh erhalten TestClient sollte MyNamepsoace.Class.TestClient ?? – Computer

+0

Ich benutze es Namespace! wie mit system.servicereference; – Farshid

Antwort

2

Sie müssen diese Datacontract in Ihrer Entitätsmodell Klasse in WCF Modell verwenden:

[DataContract] 
Public Class role 
{ 
[DataMember] 
public int role1; 
[DataMember] 
public string title; 
} 

aber nicht vom Client-Modell verwenden.

Und verwenden Sie diesen Parameter für vorbei Klasse Objekt in den WCF-Dienst OerationContract von Ihrem ConsoleApplicatione:

ServiceReference3.role role = new ServiceReference3.role(); 

role.role1=1; 
role.title="Your Title"; 

TestClient client = new TestClient(); 
bool re = client.GetData(role); 
0

Ihr Datenvertrag stimmt nicht mit dem Service überein.

Error 2 Argument 1: cannot convert from 'ConsoleApplication1.Role' to 'ConsoleApplication1.ServiceReference3.role'

Machen Sie es sicher, dass Sie verwenden, die Datacontract von Ihrem Dienstverweis kam und nicht die Rolle Sie in der Konsole erstellt. Sie sollten den Datenkontrakt ConsoleApplication1.ServiceReference3.role und nicht ConsoleApplication1.Role verwenden, sie sind unterschiedlich.