从服务引用转换为客户端?

时间:2017-01-01 19:20:56

标签: c# entity-framework web-services wcf

我有一个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;

1 个答案:

答案 0 :(得分:0)

根据你的使用声明:

using ExamOpg.ServiceReference2;

类型VareWS将是该命名空间中的VareWS类型。但您尝试将VareWS类型从ServiceReference1.VareWS转换为该类型。这显然是不可行的,所以你得到了那个例外。

将您的using语句更改为ExamOpg.ServiceReference1ServiceReference1所在的命名空间。