我尝试编写我的第一个WCF服务,这里有一些问题,
首先,我创建了一个WCF项目,然后我添加了实体模型。
之后我添加了IEmpService.svc文件。然后我将获得一个客户列表。
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>();
}
}
任何人都可以告诉我,我错过了哪一点?或者为什么这个问题发生了?怎么解决这个?
答案 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>();
}