0

我有一个业务领域对象(BDO)类:

public class BDO_LIST_DEPARTMENTS
{
    public int DEPARTMENT_ID { get; set; }
    public string DEPARTMENT_NAME { get; set; }
}

然后我有一DataContract堂课:

[DataContract]
public class DC_LIST_DEPARTMENTS
{
    [DataMember]
    public int DEPARTMENT_ID { get; set; }

    [DataMember]
    public string DEPARTMENT_NAME { get; set; }
}

在我的服务层中,我尝试将BDO转换为 aDataContract然后返回 this 的 List DataContract,作为的返回类型OperationContract

[OperationContract]
    IList<DC_LIST_DEPARTMENTS> GetAllDepartments();

这是我在服务层中最初的尝试:

public IList<DC_LIST_DEPARTMENTS> GetAllDepartments()
    {
        DC_LIST_DEPARTMENTS DCDepartment = new DC_LIST_DEPARTMENTS();
        IList<DC_LIST_DEPARTMENTS> DCListOfDepartments = new List<DC_LIST_DEPARTMENTS>();
        ICollection<BDO_LIST_DEPARTMENTS> BDOListOfDepartments = Bal.GetAllDepartments();

        foreach (BDO_LIST_DEPARTMENTS BDODepartment in BDOListOfDepartments)
        {
              DCDepartment.DEPARTMENT_ID = BDODepartment.DEPARTMENT_ID;
              DCDepartment.DEPARTMENT_NAME = BDODepartment.DEPARTMENT_NAME;
              DCListOfDepartments.Add(DCDepartment);
        }

        return DCListOfDepartments;
    }

如您所见,我尝试将单个添加DataContract到 a IList<DataContract>,但是当我这样做时,它会将该列表中的所有其他项目更改为DataContract具有相同细节的相同项目。

因此,我的问题是,正确的返回类型是什么OperationContract,如何返回一个DataContract类的列表以及如何在不更改列表中所有其他项目的数据的情况下添加到该列表中?

4

1 回答 1

0

定义收集数据契约

[CollectionDataContract]
public class DC_LIST_DEPARTMENTS_LIST : List<DC_LIST_DEPARTMENTS> {
  ...
}

并将此集合数据合约用作操作方法的返回类型。

public DC_LIST_DEPARTMENTS_LIST  GetAllDepartments() {
   ...
}

这是服务方法的修改实现:

public DC_LIST_DEPARTMENTS_LIST   GetAllDepartments() {

            IList<DC_LIST_DEPARTMENTS> DCListOfDepartments = new List<DC_LIST_DEPARTMENTS>();
            ICollection<BDO_LIST_DEPARTMENTS> BDOListOfDepartments = Bal.GetAllDepartments();

            foreach (BDO_LIST_DEPARTMENTS BDODepartment in BDOListOfDepartments) {
                DC_LIST_DEPARTMENTS DCDepartment = new DC_LIST_DEPARTMENTS() {
                    DEPARTMENT_ID = BDODepartment.DEPARTMENT_ID,
                    DEPARTMENT_NAME = BDODepartment.DEPARTMENT_NAME
                };
                DCListOfDepartments.Add(DCDepartment);
            }

            return DCListOfDepartments;
        }
于 2014-05-02T10:13:59.233 回答