我是WCF的新手,我创建了一个WCF服务库和一个控制台应用程序项目。我使用Entity Framework(数据库优先)连接到我的WCF服务库项目中的数据库。我想将一个类发送到WCF服务(我的问题)。在我的WCF项目中,我创建了一个ITest.cs
和Test.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'
我用谷歌搜索,但任何一个例子都没有解决我的问题。
答案 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
它们是不同的。