我有一个WCF Web服务,其中实现了EF(实体框架)以访问数据库中的Product表。我在项目中添加了一个测试客户端,用于在输入ID时显示退货产品。
这是我在服务界面中的方法:
[OperationContract]
VareWS VareWSGet(String barcode);
以下是服务中实现的方法:
public VareWS VareWSGet(string barcode)
{
ExamDBEntities3 context = new ExamDBEntities3();
var vareEntity = (from v
in context.Vare
where v.barcode == barcode
select v).FirstOrDefault();
if (vareEntity != null)
return TranslateProductEntityToProduct(vareEntity);
else
throw new Exception("Invalid product id");
}
以下是用于翻译产品实体的私有方法:
private VareWS TranslateProductEntityToProduct(
Vare vareEntity)
{
VareWS vare = new VareWS();
vare.navn = vareEntity.navn;
vare.pris = (int)vareEntity.pris;
return vare;
}
在我的客户端中,我使用此代码在我的Web服务中调用该方法:
sc = new Service1Client();
string inputID = TextBox1.Text;
VareWS v = sc.VareWSGet(inputID);
服务引用已成功添加,但是我收到错误消息“无法将类型'ServiceReference1.VareWS'隐式转换为'VareWS'” 我不确定如何更正此错误,因为我已指定与服务客户端的连接。如果您需要更多信息,请告诉我,谢谢。
使用陈述:
客户端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ExamOpg.ServiceReference2;
服务:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
答案 0 :(得分:0)
根据你的使用声明:
using ExamOpg.ServiceReference2;
类型VareWS
将是该命名空间中的VareWS
类型。但您尝试将VareWS
类型从ServiceReference1.VareWS
转换为该类型。这显然是不可行的,所以你得到了那个例外。
将您的using语句更改为ExamOpg.ServiceReference1
或ServiceReference1
所在的命名空间。