将类从控制台应用程序传递到WCF服务

时间:2016-08-06 09:10:03

标签: c# wcf parameter-passing

我是WCF的新手,我创建了一个WCF服务库和一个控制台应用程序项目。我使用Entity Framework(数据库优先)连接到我的WCF服务库项目中的数据库。我想将一个类发送到WCF服务(我的问题)。在我的WCF项目中,我创建了一个ITest.csTest.cs,如下所示:

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

我将此服务引用添加到我的控制台应用程序项目引用中,然后在控制台应用程序中创建我的数据库类模型,然后使用此服务,如:

        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'

我用谷歌搜索,但任何一个例子都没有解决我的问题。

2 个答案:

答案 0 :(得分:2)

您必须在 WCF模型中的实体模型类中使用此 DataContract

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

但不能从客户端模型中使用。

并将此参数用于将Class 对象传递到您的ConsoleApplicatione中的WCF服务 OerationContract

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

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

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

答案 1 :(得分:0)

您的数据合同与服务争议不符。

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

确保您使用的是来自服务参考的数据提取,而不是您在控制台中创建的角色。您应该使用数据合约ConsoleApplication1.ServiceReference3.role而不是ConsoleApplication1.Role它们是不同的。