2016-08-06 4 views
0

Я новичок в WCF, и я создал библиотеку служб WCF и проект консольного приложения. Я использую Entity Framework (сначала для базы данных) для подключения к базе данных в моем проекте библиотеки WCF. Я хочу отправить класс в службу WCF (моя проблема). В моем WCF проекта я создал ITest.cs и Test.cs что, как и ниже:Передача класса из консольного приложения в службу WCF

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; 
     } 
    } 

и добавить эту ссылку на службу в мой проект консольного приложения ссылку и я создаю модель своего класса DB в консольном приложении, а затем используйте эту услугу, например:

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

, но в этом bool re = client.GetData(rr); у меня есть эти ошибки:

Ошибка 1
Лучший перегружен матч метод 'ConsoleApplication1.ServiceReference3.TestClient.GetData (ConsoleApplication1.ServiceReference3.role)' имеет некоторые недопустимые аргументы

Ошибка 2
Аргумент 1: не удается преобразовать из 'ConsoleApplication1.Role' до 'ConsoleApplication1.ServiceReference3.role'

Я googled, но любой пример не имеет решения для моей проблемы.

+0

Возможен ли для вас, чтобы полностью определить TestClient, чтобы увидеть, если вы получите ту же IE ошибки TestClient должен быть MyNamepsoace.Class.TestClient ?? – Computer

+0

Я использую это пространство имен! как использование system.servicereference; – Farshid

ответ

2

Вы должны использовать этот DataContract в вашей модели класса сущностей в WCF модели:

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

Но не использовать от модели клиента.

И использовать этот параметр для проходящего класса объекта к службе WCF OerationContract от вашего ConsoleApplicatione:

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

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

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

Контракт ваших данных не соответствует утверждению службы.

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

сделать это убедиться, что вы используете DataContract, которые пришли из вашей ссылки на службу, а не роль, которую вы создали в консоли. Вы должны использовать данные контракта ConsoleApplication1.ServiceReference3.role, а не ConsoleApplication1.Role они разные.

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