简单的WCF服务

时间:2015-06-09 16:30:57

标签: c# asp.net asp.net-mvc wcf

我尝试编写我的第一个WCF服务,这里有一些问题,

首先,我创建了一个WCF项目,然后我添加了实体模型。
之后我添加了IEmpService.svc文件。然后我将获得一个客户列表。

我关注THIS BLOG POST

IEmpService

   [ServiceContract]
public interface IEmpService
{

    [OperationContract]
    List<Customer> GetAllCustomers();

}

EmpService

   public class EmpService : IEmpService
{
    public EmpDBEntities dbent = new EmpDBEntities(); // I can't create thisone inside GetAllCustomer method.

    public List<Customer> GetAllCustomers
    { 
     //var x = from n in dbent.Customer select n; // This is what i need to get but in here this program not recognize `var` also.
     //return x.ToList<Customer>();
    }
}

任何人都可以告诉我,我错过了哪一点?或者为什么这个问题发生了?怎么解决这个?

3 个答案:

答案 0 :(得分:2)

不确定您的问题是什么,但您是否将“客户”定义为DataContract?如果这是您的服务返回的对象,则需要对其进行定义,以便客户端可以使用它。

答案 1 :(得分:1)

我仍然对你的问题感到困惑,但我会尝试回答。

客户类需要 DataContract DataMembers 才能返回。

你可能看到了这个例子:

[DataContract]
public class CompositeType
{
    bool boolValue = true;
    string stringValue = "Hello ";

    [DataMember]
    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }
}

另外,请勿返回列表。 Microsoft已定义List,但这是一个Web服务 - 世界其他地方(苹果,android,linux,php等)将不知道如何解释List。

相反,将函数的签名更改为字符串数组。

[OperationContract]
string[] GetAllCustomers();

答案 2 :(得分:1)

如果要在public方法内创建此关键字,则应删除GetAllCustomer关键字。像这样:

public List<Customer> GetAllCustomers()
{
    EmpDBEntities dbent = new EmpDBEntities();
    var x = from n in dbent.Students select n; 
    return x.ToList<Student>();
}