.net WCF-按ID将所有行返回到XML
我是WCF新手,我只想返回Id与客户端提供的Id匹配的所有对象/记录。到目前为止,我只是让WCF一个接一个地返回对象。按照我的代码: 操作和数据契约:.net WCF-按ID将所有行返回到XML,.net,xml,wcf,entity-framework,.net,Xml,Wcf,Entity Framework,我是WCF新手,我只想返回Id与客户端提供的Id匹配的所有对象/记录。到目前为止,我只是让WCF一个接一个地返回对象。按照我的代码: 操作和数据契约: [ServiceContract] public interface IVdnLoginService { [OperationContract] VdnLoginDac GetVdnByLoginDac(string loginDac); } [DataContract] public class VdnLoginDac {
[ServiceContract]
public interface IVdnLoginService
{
[OperationContract]
VdnLoginDac GetVdnByLoginDac(string loginDac);
}
[DataContract]
public class VdnLoginDac
{
[DataMember]
public int VdnLoginDacId { get; set; }
[DataMember]
public long VdnId { get; set; }
[DataMember]
public string VdnName { get; set; }
[DataMember]
public long EmployeeId { get; set; }
[DataMember]
public string LoginDacName { get; set; }
}
将EF模型转换为我的自定义模型的服务:
public class VdnLoginService : IVdnLoginService
{
public VdnLoginDac GetVdnByLoginDac(string loginDac)
{
Entities dbContext = new Entities();
var VdnEntity = (from v
in dbContext.LOGINVDNNAMES
where v.LOGIN == loginDac
select v).FirstOrDefault();
if (VdnEntity != null)
{
return TranslateLoginVdnNamesEntityToVdnLogin(VdnEntity);
}
else
{
throw new Exception("Vdn invalido");
}
}
private VdnLoginDac TranslateLoginVdnNamesEntityToVdnLogin(LOGINVDNNAMES LoginVdnNamesEntity)
{
VdnLoginDac vdnLoginDac = new VdnLoginDac();
vdnLoginDac.VdnLoginDacId = LoginVdnNamesEntity.VDNEMPLOYEEID;
vdnLoginDac.EmployeeId = LoginVdnNamesEntity.EMPLOYEEID;
vdnLoginDac.LoginDacName = LoginVdnNamesEntity.LOGIN;
vdnLoginDac.VdnId = LoginVdnNamesEntity.VDNID;
vdnLoginDac.VdnName = LoginVdnNamesEntity.VDNNAME;
return vdnLoginDac;
}
}
我知道如果取消FirstOrDefault(),我将能够检索所有记录,但我不知道WCF将如何读取所有数据
答案和任何建议都将是非常宝贵的=)您可以做两件事来使收藏能够返回 首先,将方法的返回类型从
VdnLoginDac
更改为List
,以便可以返回匹配记录的列表
[ServiceContract]
public interface IVdnLoginService
{
[OperationContract]
List<VdnLoginDac> GetVdnByLoginDac(string loginDac);
}
请注意,没有检查
VdnEntity
是否为null或计数是否为0。客户端应该检查这一点,而不是让服务抛出异常。如果服务未处理该异常,则会导致服务关闭,客户端的通信通道将处于故障状态。Tim,现在它正在工作!另外,您对异常的解释非常好!非常感谢你!
public List<VdnLoginDac> GetVdnByLoginDac(string loginDac)
{
Entities dbContext = new Entities();
var VdnEntity = (from v
in dbContext.LOGINVDNNAMES
where v.LOGIN == loginDac
select new VdnLoginDac() {
VdnLoginDacId = v.VDNEMPLOYEEID,
EmployeeId = v.EMPLOYEEID,
LoginDacName = v.LOGIN,
VdnId = v.VDNID,
VdnName = v.VDNNAME
}).ToList();
return VdnEntity;
}